<!DOCTYPE html>
<html>

<head>
	<meta charset="utf-8">
	<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
	<meta name="theme-color" content="#33474d">
	<title>失落的乐章</title>
	<link rel="stylesheet" href="/css/style.css" />
	
      <link rel="alternate" href="/atom.xml" title="失落的乐章" type="application/atom+xml">
    
</head>

<body>

	<header class="header">
		<nav class="header__nav">
			
				<a href="/archives" class="header__link">Archive</a>
			
				<a href="/tags" class="header__link">Tags</a>
			
				<a href="/atom.xml" class="header__link">RSS</a>
			
		</nav>
		<h1 class="header__title"><a href="/">失落的乐章</a></h1>
		<h2 class="header__subtitle">技术面前，永远都是学生。</h2>
	</header>

	<main>
		
	<span class="different-posts different-posts_earlier">📖 <a href="/page/50">earlier posts</a> 📖</span>




	<article>
	
		<h1><a href="/2017/10/12/2. Linux 命令/57. Linux 命令- traceroute/">Linux 命令- traceroute</a></h1>
	
	<div class="article__infos">
		<span class="article__date">2017-10-12</span><br />
		
		
			<span class="article__tags">
			  	<a class="article__tag-link" href="/tags/Linux命令/">Linux命令</a>
			</span>
		
	</div>

	

	
		<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;通过traceroute我们可以知道信息从你的计算机到互联网另一端的主机是走的什么路径。当然每次数据包由某一同样的出发点（source）到达某一同样的目的地(destination)走的路径可能会不一样，但基本上来说大部分时候所走的路由是相同的。linux系统中，我们称之为traceroute,在MS Windows中为tracert。 traceroute通过发送小的数据包到目的设备直到其返回，来测量其需要多长时间。一条路径上的每个设备traceroute要测3次。输出结果中包括每次测试的时间(ms)和设备的名称（如有的话）及其IP地址。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;在大多数情况下，我们会在linux主机系统下，直接执行命令行：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">traceroute hostname</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;而在Windows系统下是执行tracert的命令：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">tracert hostname</div></pre></td></tr></table></figure>
<h2 id="1-命令格式"><a href="#1-命令格式" class="headerlink" title="1.命令格式"></a>1.命令格式</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">traceroute [参数] [主机]</div></pre></td></tr></table></figure>
<h2 id="2-命令功能"><a href="#2-命令功能" class="headerlink" title="2.命令功能"></a>2.命令功能</h2><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;traceroute指令让你追踪网络数据包的路由途径，预设数据包大小是40Bytes，用户可另行设置。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;具体参数格式：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">traceroute [-dFlnrvx][-f&lt;存活数值&gt;][-g&lt;网关&gt;...][-i&lt;网络界面&gt;][-m&lt;存活数值&gt;][-p&lt;通信端口&gt;][-s&lt;来源地址&gt;][-t&lt;服务类型&gt;][-w&lt;超时秒数&gt;][主机名称或IP地址][数据包大小]</div></pre></td></tr></table></figure>
<h2 id="3-命令参数"><a href="#3-命令参数" class="headerlink" title="3.命令参数"></a>3.命令参数</h2><ul>
<li>-d 使用Socket层级的排错功能。</li>
<li>-f 设置第一个检测数据包的存活数值TTL的大小。</li>
<li>-F 设置勿离断位。</li>
<li>-g 设置来源路由网关，最多可设置8个。</li>
<li>-i 使用指定的网络界面送出数据包。</li>
<li>-I 使用ICMP回应取代UDP资料信息。</li>
<li>-m 设置检测数据包的最大存活数值TTL的大小。</li>
<li>-n 直接使用IP地址而非主机名称。</li>
<li>-p 设置UDP传输协议的通信端口。</li>
<li>-r 忽略普通的Routing Table，直接将数据包送到远端主机上。</li>
<li>-s 设置本地主机送出数据包的IP地址。</li>
<li>-t 设置检测数据包的TOS数值。</li>
<li>-v 详细显示指令的执行过程。</li>
<li>-w 设置等待远端主机回报的时间。</li>
<li>-x 开启或关闭数据包的正确性检验。</li>
</ul>
<h2 id="4-使用实例"><a href="#4-使用实例" class="headerlink" title="4.使用实例"></a>4.使用实例</h2><h3 id="实例1：traceroute-用法简单、最常用的用法"><a href="#实例1：traceroute-用法简单、最常用的用法" class="headerlink" title="实例1：traceroute 用法简单、最常用的用法"></a>实例1：traceroute 用法简单、最常用的用法</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">traceroute www.baidu.com</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]# traceroute www.baidu.com</div><div class="line">traceroute to www.baidu.com (61.135.169.125), 30 hops max, 40 byte packets</div><div class="line"> 1  192.168.74.2 (192.168.74.2)  2.606 ms  2.771 ms  2.950 ms</div><div class="line"> 2  211.151.56.57 (211.151.56.57)  0.596 ms  0.598 ms  0.591 ms</div><div class="line"> 3  211.151.227.206 (211.151.227.206)  0.546 ms  0.544 ms  0.538 ms</div><div class="line"> 4  210.77.139.145 (210.77.139.145)  0.710 ms  0.748 ms  0.801 ms</div><div class="line"> 5  202.106.42.101 (202.106.42.101)  6.759 ms  6.945 ms  7.107 ms</div><div class="line"> 6  61.148.154.97 (61.148.154.97)  718.908 ms * bt-228-025.bta.net.cn (202.106.228.25)  5.177 ms</div><div class="line"> 7  124.65.58.213 (124.65.58.213)  4.343 ms  4.336 ms  4.367 ms</div><div class="line"> 8  202.106.35.190 (202.106.35.190)  1.795 ms 61.148.156.138 (61.148.156.138)  1.899 ms  1.951 ms</div><div class="line"> 9  * * *</div><div class="line">30  * * *</div><div class="line">[root@localhost ~]#</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>说明</strong></p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;记录按序列号从1开始，每个纪录就是一跳 ，每跳表示一个网关，我们看到每行有三个时间，单位是 ms，其实就是-q的默认参数。探测数据包向每个网关发送三个数据包后，网关响应后返回的时间；如果您用 traceroute -q 4 www.58.com ，表示向每个网关发送4个数据包。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;有时我们traceroute 一台主机时，会看到有一些行是以星号表示的。出现这样的情况，可能是防火墙封掉了ICMP的返回信息，所以我们得不到什么相关的数据包返回数据。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;有时我们在某一网关处延时比较长，有可能是某台网关比较阻塞，也可能是物理设备本身的原因。当然如果某台DNS出现问题时，不能解析主机名、域名时，也会 有延时长的现象；您可以加-n 参数来避免DNS解析，以IP格式输出数据。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;如果在局域网中的不同网段之间，我们可以通过traceroute 来排查问题所在，是主机的问题还是网关的问题。如果我们通过远程来访问某台服务器遇到问题时，我们用到traceroute 追踪数据包所经过的网关，提交IDC服务商，也有助于解决问题；但目前看来在国内解决这样的问题是比较困难的，就是我们发现问题所在，IDC服务商也不可能帮助我们解决。</p>
<h3 id="实例2：跳数设置"><a href="#实例2：跳数设置" class="headerlink" title="实例2：跳数设置"></a>实例2：跳数设置</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">traceroute -m 10 www.baidu.com</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># traceroute -m 10 www.baidu.com</span></div><div class="line">traceroute to www.baidu.com (61.135.169.105), 10 hops max, 40 byte packets</div><div class="line"> 1  192.168.74.2 (192.168.74.2)  1.534 ms  1.775 ms  1.961 ms</div><div class="line"> 2  211.151.56.1 (211.151.56.1)  0.508 ms  0.514 ms  0.507 ms</div><div class="line"> 3  211.151.227.206 (211.151.227.206)  0.571 ms  0.558 ms  0.550 ms</div><div class="line"> 4  210.77.139.145 (210.77.139.145)  0.708 ms  0.729 ms  0.785 ms</div><div class="line"> 5  202.106.42.101 (202.106.42.101)  7.978 ms  8.155 ms  8.311 ms</div><div class="line"> 6  bt-228-037.bta.net.cn (202.106.228.37)  772.460 ms bt-228-025.bta.net.cn (202.106.228.25)  2.152 ms 61.148.154.97 (61.148.154.97)  772.107 ms</div><div class="line"> 7  124.65.58.221 (124.65.58.221)  4.875 ms 61.148.146.29 (61.148.146.29)  2.124 ms 124.65.58.221 (124.65.58.221)  4.854 ms</div><div class="line"> 8  123.126.6.198 (123.126.6.198)  2.944 ms 61.148.156.6 (61.148.156.6)  3.505 ms 123.126.6.198 (123.126.6.198)  2.885 ms</div><div class="line"> 9  * * *</div><div class="line">10  * * *</div><div class="line">[root@localhost ~]<span class="comment">#</span></div></pre></td></tr></table></figure>
<h3 id="实例3：显示IP地址，不查主机名"><a href="#实例3：显示IP地址，不查主机名" class="headerlink" title="实例3：显示IP地址，不查主机名"></a>实例3：显示IP地址，不查主机名</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">traceroute -n www.baidu.com</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div><div class="line">17</div><div class="line">18</div><div class="line">19</div><div class="line">20</div><div class="line">21</div><div class="line">22</div><div class="line">23</div><div class="line">24</div><div class="line">25</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># traceroute -n www.baidu.com</span></div><div class="line">traceroute to www.baidu.com (61.135.169.125), 30 hops max, 40 byte packets</div><div class="line"> 1  211.151.74.2  5.430 ms  5.636 ms  5.802 ms</div><div class="line"> 2  211.151.56.57  0.627 ms  0.625 ms  0.617 ms</div><div class="line"> 3  211.151.227.206  0.575 ms  0.584 ms  0.576 ms</div><div class="line"> 4  210.77.139.145  0.703 ms  0.754 ms  0.806 ms</div><div class="line"> 5  202.106.42.101  23.683 ms  23.869 ms  23.998 ms</div><div class="line"> 6  202.106.228.37  247.101 ms * *</div><div class="line"> 7  61.148.146.29  5.256 ms 124.65.58.213  4.386 ms  4.373 ms</div><div class="line"> 8  202.106.35.190  1.610 ms 61.148.156.138  1.786 ms 61.148.3.34  2.089 ms</div><div class="line"> 9  * * *</div><div class="line">30  * * *</div><div class="line">[root@localhost ~]<span class="comment"># traceroute www.baidu.com</span></div><div class="line">traceroute to www.baidu.com (61.135.169.125), 30 hops max, 40 byte packets</div><div class="line"> 1  211.151.74.2 (211.151.74.2)  4.671 ms  4.865 ms  5.055 ms</div><div class="line"> 2  211.151.56.57 (211.151.56.57)  0.619 ms  0.618 ms  0.612 ms</div><div class="line"> 3  211.151.227.206 (211.151.227.206)  0.620 ms  0.642 ms  0.636 ms</div><div class="line"> 4  210.77.139.145 (210.77.139.145)  0.720 ms  0.772 ms  0.816 ms</div><div class="line"> 5  202.106.42.101 (202.106.42.101)  7.667 ms  7.910 ms  8.012 ms</div><div class="line"> 6  bt-228-025.bta.net.cn (202.106.228.25)  2.965 ms  2.440 ms 61.148.154.97 (61.148.154.97)  431.337 ms</div><div class="line"> 7  124.65.58.213 (124.65.58.213)  5.134 ms  5.124 ms  5.044 ms</div><div class="line"> 8  202.106.35.190 (202.106.35.190)  1.917 ms  2.052 ms  2.059 ms</div><div class="line"> 9  * * *</div><div class="line">30  * * *</div><div class="line">[root@localhost ~]<span class="comment">#</span></div></pre></td></tr></table></figure>
<h3 id="实例4：探测包使用的基本UDP端口设置6888"><a href="#实例4：探测包使用的基本UDP端口设置6888" class="headerlink" title="实例4：探测包使用的基本UDP端口设置6888"></a>实例4：探测包使用的基本UDP端口设置6888</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">traceroute -p 6888 www.baidu.com</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># traceroute -p 6888 www.baidu.com</span></div><div class="line">traceroute to www.baidu.com (220.181.111.147), 30 hops max, 40 byte packets</div><div class="line"> 1  211.151.74.2 (211.151.74.2)  4.927 ms  5.121 ms  5.298 ms</div><div class="line"> 2  211.151.56.1 (211.151.56.1)  0.500 ms  0.499 ms  0.509 ms</div><div class="line"> 3  211.151.224.90 (211.151.224.90)  0.637 ms  0.631 ms  0.641 ms</div><div class="line"> 4  * * *</div><div class="line"> 5  220.181.70.98 (220.181.70.98)  5.050 ms  5.313 ms  5.596 ms</div><div class="line"> 6  220.181.17.94 (220.181.17.94)  1.665 ms !X * *</div><div class="line">[root@localhost ~]<span class="comment">#</span></div></pre></td></tr></table></figure>
<h3 id="实例5：把探测包的个数设置为值4"><a href="#实例5：把探测包的个数设置为值4" class="headerlink" title="实例5：把探测包的个数设置为值4"></a>实例5：把探测包的个数设置为值4</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">traceroute -q 4 www.baidu.com</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># traceroute -q 4 www.baidu.com</span></div><div class="line">traceroute to www.baidu.com (61.135.169.125), 30 hops max, 40 byte packets</div><div class="line"> 1  211.151.74.2 (211.151.74.2)  40.633 ms  40.819 ms  41.004 ms  41.188 ms</div><div class="line"> 2  211.151.56.57 (211.151.56.57)  0.637 ms  0.633 ms  0.627 ms  0.619 ms</div><div class="line"> 3  211.151.227.206 (211.151.227.206)  0.505 ms  0.580 ms  0.571 ms  0.569 ms</div><div class="line"> 4  210.77.139.145 (210.77.139.145)  0.753 ms  0.800 ms  0.853 ms  0.904 ms</div><div class="line"> 5  202.106.42.101 (202.106.42.101)  7.449 ms  7.543 ms  7.738 ms  7.893 ms</div><div class="line"> 6  61.148.154.97 (61.148.154.97)  316.817 ms bt-228-025.bta.net.cn (202.106.228.25)  3.695 ms  3.672 ms *</div><div class="line"> 7  124.65.58.213 (124.65.58.213)  3.056 ms  2.993 ms  2.960 ms 61.148.146.29 (61.148.146.29)  2.837 ms</div><div class="line"> 8  61.148.3.34 (61.148.3.34)  2.179 ms  2.295 ms  2.442 ms 202.106.35.190 (202.106.35.190)  7.136 ms</div><div class="line"> 9  * * * *</div><div class="line">30  * * * *</div><div class="line">[root@localhost ~]<span class="comment">#</span></div></pre></td></tr></table></figure>
<h3 id="实例6：绕过正常的路由表，直接发送到网络相连的主机"><a href="#实例6：绕过正常的路由表，直接发送到网络相连的主机" class="headerlink" title="实例6：绕过正常的路由表，直接发送到网络相连的主机"></a>实例6：绕过正常的路由表，直接发送到网络相连的主机</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">traceroute -r www.baidu.com</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># traceroute -r www.baidu.com</span></div><div class="line">traceroute to www.baidu.com (61.135.169.125), 30 hops max, 40 byte packets</div><div class="line">connect: 网络不可达</div><div class="line">[root@localhost ~]<span class="comment">#</span></div></pre></td></tr></table></figure>
<h3 id="实例7：把对外发探测包的等待响应时间设置为3秒"><a href="#实例7：把对外发探测包的等待响应时间设置为3秒" class="headerlink" title="实例7：把对外发探测包的等待响应时间设置为3秒"></a>实例7：把对外发探测包的等待响应时间设置为3秒</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">traceroute -w 3 www.baidu.com</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># traceroute -w 3 www.baidu.com</span></div><div class="line">traceroute to www.baidu.com (61.135.169.105), 30 hops max, 40 byte packets</div><div class="line"> 1  211.151.74.2 (211.151.74.2)  2.306 ms  2.469 ms  2.650 ms</div><div class="line"> 2  211.151.56.1 (211.151.56.1)  0.621 ms  0.613 ms  0.603 ms</div><div class="line"> 3  211.151.227.206 (211.151.227.206)  0.557 ms  0.560 ms  0.552 ms</div><div class="line"> 4  210.77.139.145 (210.77.139.145)  0.708 ms  0.761 ms  0.817 ms</div><div class="line"> 5  202.106.42.101 (202.106.42.101)  7.520 ms  7.774 ms  7.902 ms</div><div class="line"> 6  bt-228-025.bta.net.cn (202.106.228.25)  2.890 ms  2.369 ms 61.148.154.97 (61.148.154.97)  471.961 ms</div><div class="line"> 7  124.65.58.221 (124.65.58.221)  4.490 ms  4.483 ms  4.472 ms</div><div class="line"> 8  123.126.6.198 (123.126.6.198)  2.948 ms 61.148.156.6 (61.148.156.6)  7.688 ms  7.756 ms</div><div class="line"> 9  * * *</div><div class="line">30  * * *</div><div class="line">[root@localhost ~]<span class="comment">#</span></div></pre></td></tr></table></figure>
<h2 id="Traceroute的工作原理："><a href="#Traceroute的工作原理：" class="headerlink" title="Traceroute的工作原理："></a>Traceroute的工作原理：</h2><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Traceroute最简单的基本用法是：traceroute hostname</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Traceroute程序的设计是利用ICMP及IP header的TTL（Time To Live）栏位（field）。首先，traceroute送出一个TTL是1的IP datagram（其实，每次送出的为3个40字节的包，包括源地址，目的地址和包发出的时间标签）到目的地，当路径上的第一个路由器（router）收到这个datagram时，它将TTL减1。此时，TTL变为0了，所以该路由器会将此datagram丢掉，并送回一个「ICMP time exceeded」消息（包括发IP包的源地址，IP包的所有内容及路由器的IP地址），traceroute 收到这个消息后，便知道这个路由器存在于这个路径上，接着traceroute 再送出另一个TTL是2 的datagram，发现第2 个路由器…… traceroute 每次将送出的datagram的TTL 加1来发现另一个路由器，这个重复的动作一直持续到某个datagram 抵达目的地。当datagram到达目的地后，该主机并不会送回ICMP time exceeded消息，因为它已是目的地了，那么traceroute如何得知目的地到达了呢？</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Traceroute在送出UDP datagrams到目的地时，它所选择送达的port number 是一个一般应用程序都不会用的号码（30000 以上），所以当此UDP datagram 到达目的地后该主机会送回一个「ICMP port unreachable」的消息，而当traceroute 收到这个消息时，便知道目的地已经到达了。所以traceroute 在Server端也是没有所谓的Daemon 程式。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Traceroute提取发 ICMP TTL到期消息设备的IP地址并作域名解析。每次 ，Traceroute都打印出一系列数据,包括所经过的路由设备的域名及 IP地址,三个包每次来回所花时间。</p>
<h2 id="windows之tracert"><a href="#windows之tracert" class="headerlink" title="windows之tracert:"></a>windows之tracert:</h2><h3 id="格式："><a href="#格式：" class="headerlink" title="格式："></a>格式：</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">tracert [-d] [-h maximum_hops] [-j host-list] [-w timeout] target_name</div></pre></td></tr></table></figure>
<h3 id="参数说明："><a href="#参数说明：" class="headerlink" title="参数说明："></a>参数说明：</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">tracert [-d] [-h maximum_hops] [-j computer-list] [-w timeout] target_name</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;该诊断实用程序通过向目的地发送具有不同生存时间 (TL) 的 Internet 控制信息协议 (CMP) 回应报文，以确定至目的地的路由。路径上的每个路由器都要在转发该 ICMP 回应报文之前将其 TTL 值至少减 1，因此 TTL 是有效的跳转计数。当报文的 TTL 值减少到 0 时，路由器向源系统发回 ICMP 超时信息。通过发送 TTL 为 1 的第一个回应报文并且在随后的发送中每次将 TTL 值加 1，直到目标响应或达到最大 TTL 值，Tracert 可以确定路由。通过检查中间路由器发发回的 ICMP 超时 (ime Exceeded) 信息，可以确定路由器。注意，有些路由器“安静”地丢弃生存时间 (TLS) 过期的报文并且对 tracert 无效。</p>
<h4 id="参数："><a href="#参数：" class="headerlink" title="参数："></a>参数：</h4><ul>
<li>-d 指定不对计算机名解析地址。</li>
<li>-h maximum_hops 指定查找目标的跳转的最大数目。</li>
<li>-jcomputer-list 指定在 computer-list 中松散源路由。</li>
<li>-w timeout 等待由 timeout 对每个应答指定的毫秒数。</li>
<li>target_name 目标计算机的名称。</li>
</ul>
<h4 id="实例："><a href="#实例：" class="headerlink" title="实例："></a>实例：</h4><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div><div class="line">17</div><div class="line">18</div><div class="line">19</div><div class="line">20</div><div class="line">21</div><div class="line">22</div><div class="line">23</div><div class="line">24</div><div class="line">25</div><div class="line">26</div><div class="line">27</div><div class="line">28</div><div class="line">29</div></pre></td><td class="code"><pre><div class="line">C:\Users\Administrator&gt;tracert www.58.com</div><div class="line"></div><div class="line">Tracing route to www.58.com [221.187.111.30]</div><div class="line">over a maximum of 30 hops:</div><div class="line"></div><div class="line">  1     1 ms     1 ms     1 ms  10.58.156.1</div><div class="line">  2     1 ms    &lt;1 ms    &lt;1 ms  10.10.10.1</div><div class="line">  3     1 ms     1 ms     1 ms  211.103.193.129</div><div class="line">  4     2 ms     2 ms     2 ms  10.255.109.129</div><div class="line">  5     1 ms     1 ms     3 ms  124.205.98.205</div><div class="line">  6     2 ms     2 ms     2 ms  124.205.98.253</div><div class="line">  7     2 ms     6 ms     1 ms  202.99.1.125</div><div class="line">  8     5 ms     6 ms     5 ms  118.186.0.113</div><div class="line">  9   207 ms     *        *     118.186.0.106</div><div class="line"> 10     8 ms     6 ms    11 ms  124.238.226.201</div><div class="line"> 11     6 ms     7 ms     6 ms  219.148.19.177</div><div class="line"> 12    12 ms    12 ms    16 ms  219.148.18.117</div><div class="line"> 13    14 ms    17 ms    16 ms  219.148.19.125</div><div class="line"> 14    13 ms    13 ms    12 ms  202.97.80.113</div><div class="line"> 15     *        *        *     Request timed out.</div><div class="line"> 16    12 ms    12 ms    17 ms  bj141-147-82.bjtelecom.net [219.141.147.82]</div><div class="line"> 17    13 ms    13 ms    12 ms  202.97.48.2</div><div class="line"> 18     *        *        *     Request timed out.</div><div class="line"> 19    14 ms    14 ms    12 ms  221.187.224.85</div><div class="line"> 20    15 ms    13 ms    12 ms  221.187.104.2</div><div class="line"> 21     *        *        *     Request timed out.</div><div class="line"> 22    15 ms    17 ms    18 ms  221.187.111.30</div><div class="line"></div><div class="line">Trace complete.</div></pre></td></tr></table></figure>
	

	

</article>




	<article>
	
		<h1><a href="/2017/10/12/2. Linux 命令/58. Linux 命令- netstat/">Linux 命令- netstat</a></h1>
	
	<div class="article__infos">
		<span class="article__date">2017-10-12</span><br />
		
		
			<span class="article__tags">
			  	<a class="article__tag-link" href="/tags/Linux命令/">Linux命令</a>
			</span>
		
	</div>

	

	
		<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;netstat命令用于显示与IP、TCP、UDP和ICMP协议相关的统计数据，一般用于检验本机各端口的网络连接情况。netstat是在内核中访问网络及相关信息的程序，它能提供TCP连接，TCP和UDP监听，进程内存管理的相关报告。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;如果你的计算机有时候接收到的数据报导致出错数据或故障，你不必感到奇怪，TCP/IP可以容许这些类型的错误，并能够自动重发数据报。但如果累计的出错情况数目占到所接收的IP数据报相当大的百分比，或者它的数目正迅速增加，那么你就应该使用netstat查一查为什么会出现这些情况了。</p>
<h2 id="1．命令格式"><a href="#1．命令格式" class="headerlink" title="1．命令格式"></a>1．命令格式</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">netstat [-acCeFghilMnNoprstuvVwx] [-A&lt;网络类型&gt;] [--ip]</div></pre></td></tr></table></figure>
<h2 id="2．命令功能"><a href="#2．命令功能" class="headerlink" title="2．命令功能"></a>2．命令功能</h2><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;netstat用于显示与IP、TCP、UDP和ICMP协议相关的统计数据，一般用于检验本机各端口的网络连接情况。</p>
<h2 id="3．命令参数"><a href="#3．命令参数" class="headerlink" title="3．命令参数"></a>3．命令参数</h2><ul>
<li>-a或–all 显示所有连线中的Socket。</li>
<li>-A&lt;网络类型&gt;或–&lt;网络类型&gt; 列出该网络类型连线中的相关地址。</li>
<li>-c或–continuous 持续列出网络状态。</li>
<li>-C或–cache 显示路由器配置的快取信息。</li>
<li>-e或–extend 显示网络其他相关信息。</li>
<li>-F或–fib 显示FIB。</li>
<li>-g或–groups 显示多重广播功能群组组员名单。</li>
<li>-h或–help 在线帮助。</li>
<li>-i或–interfaces 显示网络界面信息表单。</li>
<li>-l或–listening 显示监控中的服务器的Socket。</li>
<li>-M或–masquerade 显示伪装的网络连线。</li>
<li>-n或–numeric 直接使用IP地址，而不通过域名服务器。</li>
<li>-N或–netlink或–symbolic 显示网络硬件外围设备的符号连接名称。</li>
<li>-o或–timers 显示计时器。</li>
<li>-p或–programs 显示正在使用Socket的程序识别码和程序名称。</li>
<li>-r或–route 显示Routing Table。</li>
<li>-s或–statistice 显示网络工作信息统计表。</li>
<li>-t或–tcp 显示TCP传输协议的连线状况。</li>
<li>-u或–udp 显示UDP传输协议的连线状况。</li>
<li>-v或–verbose 显示指令执行过程。</li>
<li>-V或–version 显示版本信息。</li>
<li>-w或–raw 显示RAW传输协议的连线状况。</li>
<li>-x或–unix 此参数的效果和指定”-A unix”参数相同。</li>
<li>–ip或–inet 此参数的效果和指定”-A inet”参数相同。</li>
</ul>
<h2 id="4．使用实例"><a href="#4．使用实例" class="headerlink" title="4．使用实例"></a>4．使用实例</h2><h3 id="实例1：无参数使用"><a href="#实例1：无参数使用" class="headerlink" title="实例1：无参数使用"></a>实例1：无参数使用</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">netstat</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># netstat</span></div><div class="line">Active Internet connections (w/o servers)</div><div class="line">Proto Recv-Q Send-Q Local Address               Foreign Address             State      </div><div class="line">tcp        0    268 192.168.120.204:ssh         10.2.0.68:62420             ESTABLISHED </div><div class="line">udp        0      0 192.168.120.204:4371        10.58.119.119:domain        ESTABLISHED </div><div class="line">Active UNIX domain sockets (w/o servers)</div><div class="line">Proto RefCnt Flags       Type       State         I-Node Path</div><div class="line">unix  2      [ ]         DGRAM                    1491   @/org/kernel/udev/udevd</div><div class="line">unix  4      [ ]         DGRAM                    7337   /dev/<span class="built_in">log</span></div><div class="line">unix  2      [ ]         DGRAM                    708823 </div><div class="line">unix  2      [ ]         DGRAM                    7539   </div><div class="line">unix  3      [ ]         STREAM     CONNECTED     7287   </div><div class="line">unix  3      [ ]         STREAM     CONNECTED     7286   </div><div class="line">[root@localhost ~]<span class="comment">#</span></div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>说明</strong></p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;从整体上看，netstat的输出结果可以分为两个部分：</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;一个是Active Internet connections，称为有源TCP连接，其中”Recv-Q”和”Send-Q”指的是接收队列和发送队列。这些数字一般都应该是0。如果不是则表示软件包正在队列中堆积。这种情况只能在非常少的情况见到。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;另一个是Active UNIX domain sockets，称为有源Unix域套接口(和网络套接字一样，但是只能用于本机通信，性能可以提高一倍)。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Proto显示连接使用的协议,RefCnt表示连接到本套接口上的进程号,Types显示套接口的类型,State显示套接口当前的状态,Path表示连接到套接口的其它进程使用的路径名。</p>
<h4 id="套接口类型："><a href="#套接口类型：" class="headerlink" title="套接口类型："></a>套接口类型：</h4><ul>
<li>-t ：TCP</li>
<li>-u ：UDP</li>
<li>-raw ：RAW类型</li>
<li>–unix ：UNIX域类型</li>
<li>–ax25 ：AX25类型</li>
<li>–ipx ：ipx类型</li>
<li>–netrom ：netrom类型</li>
</ul>
<h4 id="状态说明："><a href="#状态说明：" class="headerlink" title="状态说明："></a>状态说明：</h4><ul>
<li>LISTEN：侦听来自远方的TCP端口的连接请求</li>
<li>SYN-SENT：再发送连接请求后等待匹配的连接请求（如果有大量这样的状态包，检查是否中招了）</li>
<li>SYN-RECEIVED：再收到和发送一个连接请求后等待对方对连接请求的确认（如有大量此状态，估计被flood攻击了）</li>
<li>ESTABLISHED：代表一个打开的连接</li>
<li>FIN-WAIT-1：等待远程TCP连接中断请求，或先前的连接中断请求的确认</li>
<li>FIN-WAIT-2：从远程TCP等待连接中断请求</li>
<li>CLOSE-WAIT：等待从本地用户发来的连接中断请求</li>
<li>CLOSING：等待远程TCP对连接中断的确认</li>
<li>LAST-ACK：等待原来的发向远程TCP的连接中断请求的确认（不是什么好东西，此项出现，检查是否被攻击）</li>
<li>TIME-WAIT：等待足够的时间以确保远程TCP接收到连接中断请求的确认<br>CLOSED：没有任何连接状态</li>
</ul>
<h3 id="实例2：列出所有端口"><a href="#实例2：列出所有端口" class="headerlink" title="实例2：列出所有端口"></a>实例2：列出所有端口</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">netstat -a</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div><div class="line">17</div><div class="line">18</div><div class="line">19</div><div class="line">20</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># netstat -a</span></div><div class="line">Active Internet connections (servers and established)</div><div class="line">Proto Recv-Q Send-Q Local Address               Foreign Address             State      </div><div class="line">tcp        0      0 localhost:smux              *:*                         LISTEN      </div><div class="line">tcp        0      0 *:svn                       *:*                         LISTEN      </div><div class="line">tcp        0      0 *:ssh                       *:*                         LISTEN      </div><div class="line">tcp        0    284 192.168.120.204:ssh         10.2.0.68:62420             ESTABLISHED </div><div class="line">udp        0      0 localhost:syslog            *:*                                     </div><div class="line">udp        0      0 *:snmp                      *:*                                     </div><div class="line">Active UNIX domain sockets (servers and established)</div><div class="line">Proto RefCnt Flags       Type       State         I-Node Path</div><div class="line">unix  2      [ ACC ]     STREAM     LISTENING     708833 /tmp/ssh-yKnDB15725/agent.15725</div><div class="line">unix  2      [ ACC ]     STREAM     LISTENING     7296   /var/run/audispd_events</div><div class="line">unix  2      [ ]         DGRAM                    1491   @/org/kernel/udev/udevd</div><div class="line">unix  4      [ ]         DGRAM                    7337   /dev/<span class="built_in">log</span></div><div class="line">unix  2      [ ]         DGRAM                    708823 </div><div class="line">unix  2      [ ]         DGRAM                    7539   </div><div class="line">unix  3      [ ]         STREAM     CONNECTED     7287   </div><div class="line">unix  3      [ ]         STREAM     CONNECTED     7286   </div><div class="line">[root@localhost ~]<span class="comment">#</span></div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>说明</strong><br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;显示一个所有的有效连接信息列表，包括已建立的连接（ESTABLISHED），也包括监听连接请（LISTENING）的那些连接。</p>
<h3 id="实例3：显示当前UDP连接状况"><a href="#实例3：显示当前UDP连接状况" class="headerlink" title="实例3：显示当前UDP连接状况"></a>实例3：显示当前UDP连接状况</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">netstat -nu</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div></pre></td><td class="code"><pre><div class="line">[root@andy ~]<span class="comment"># netstat -nu</span></div><div class="line">Active Internet connections (w/o servers)</div><div class="line">Proto Recv-Q Send-Q Local Address               Foreign Address             State      </div><div class="line">udp        0      0 ::ffff:192.168.12:53392     ::ffff:192.168.9.120:10000  ESTABLISHED </div><div class="line">udp        0      0 ::ffff:192.168.12:56723     ::ffff:192.168.9.120:10000  ESTABLISHED </div><div class="line">udp        0      0 ::ffff:192.168.12:56480     ::ffff:192.168.9.120:10000  ESTABLISHED </div><div class="line">udp        0      0 ::ffff:192.168.12:58154     ::ffff:192.168.9.120:10000  ESTABLISHED </div><div class="line">udp        0      0 ::ffff:192.168.12:44227     ::ffff:192.168.9.120:10000  ESTABLISHED </div><div class="line">udp        0      0 ::ffff:192.168.12:36954     ::ffff:192.168.9.120:10000  ESTABLISHED </div><div class="line">udp        0      0 ::ffff:192.168.12:53984     ::ffff:192.168.9.120:10000  ESTABLISHED </div><div class="line">udp        0      0 ::ffff:192.168.12:57703     ::ffff:192.168.9.120:10000  ESTABLISHED </div><div class="line">udp        0      0 ::ffff:192.168.12:53613     ::ffff:192.168.9.120:10000  ESTABLISHED </div><div class="line">[root@andy ~]<span class="comment">#</span></div></pre></td></tr></table></figure>
<h3 id="实例4：显示UDP端口号的使用情况"><a href="#实例4：显示UDP端口号的使用情况" class="headerlink" title="实例4：显示UDP端口号的使用情况"></a>实例4：显示UDP端口号的使用情况</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">netstat -apu</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div><div class="line">17</div><div class="line">18</div><div class="line">19</div><div class="line">20</div><div class="line">21</div><div class="line">22</div><div class="line">23</div><div class="line">24</div><div class="line">25</div><div class="line">26</div><div class="line">27</div><div class="line">28</div><div class="line">29</div><div class="line">30</div></pre></td><td class="code"><pre><div class="line">[root@andy ~]<span class="comment"># netstat -apu</span></div><div class="line">Active Internet connections (servers and established)</div><div class="line">Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   </div><div class="line">udp        0      0 *:57604                     *:*                                     28094/java          </div><div class="line">udp        0      0 *:40583                     *:*                                     21220/java          </div><div class="line">udp        0      0 *:45451                     *:*                                     14583/java          </div><div class="line">udp        0      0 ::ffff:192.168.12:53392     ::ffff:192.168.9.120:ndmp   ESTABLISHED 19327/java          </div><div class="line">udp        0      0 *:52370                     *:*                                     15841/java          </div><div class="line">udp        0      0 ::ffff:192.168.12:56723     ::ffff:192.168.9.120:ndmp   ESTABLISHED 15841/java          </div><div class="line">udp        0      0 *:44182                     *:*                                     31757/java          </div><div class="line">udp        0      0 *:48155                     *:*                                     5476/java           </div><div class="line">udp        0      0 *:59808                     *:*                                     17333/java          </div><div class="line">udp        0      0 ::ffff:192.168.12:56480     ::ffff:192.168.9.120:ndmp   ESTABLISHED 28094/java          </div><div class="line">udp        0      0 ::ffff:192.168.12:58154     ::ffff:192.168.9.120:ndmp   ESTABLISHED 15429/java          </div><div class="line">udp        0      0 *:36780                     *:*                                     10091/java          </div><div class="line">udp        0      0 *:36795                     *:*                                     24594/java          </div><div class="line">udp        0      0 *:41922                     *:*                                     20506/java          </div><div class="line">udp        0      0 ::ffff:192.168.12:44227     ::ffff:192.168.9.120:ndmp   ESTABLISHED 17333/java          </div><div class="line">udp        0      0 *:34258                     *:*                                     8866/java           </div><div class="line">udp        0      0 *:55508                     *:*                                     11667/java          </div><div class="line">udp        0      0 *:36055                     *:*                                     12425/java          </div><div class="line">udp        0      0 ::ffff:192.168.12:36954     ::ffff:192.168.9.120:ndmp   ESTABLISHED 16532/java          </div><div class="line">udp        0      0 ::ffff:192.168.12:53984     ::ffff:192.168.9.120:ndmp   ESTABLISHED 20506/java          </div><div class="line">udp        0      0 ::ffff:192.168.12:57703     ::ffff:192.168.9.120:ndmp   ESTABLISHED 31757/java          </div><div class="line">udp        0      0 ::ffff:192.168.12:53613     ::ffff:192.168.9.120:ndmp   ESTABLISHED 3199/java           </div><div class="line">udp        0      0 *:56309                     *:*                                     15429/java          </div><div class="line">udp        0      0 *:54007                     *:*                                     16532/java          </div><div class="line">udp        0      0 *:39544                     *:*                                     3199/java           </div><div class="line">udp        0      0 *:43900                     *:*                                     19327/java          </div><div class="line">[root@andy ~]<span class="comment">#</span></div></pre></td></tr></table></figure>
<h3 id="实例5：显示网卡列表"><a href="#实例5：显示网卡列表" class="headerlink" title="实例5：显示网卡列表"></a>实例5：显示网卡列表</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">netstat -i</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div></pre></td><td class="code"><pre><div class="line">[root@andy ~]<span class="comment"># netstat -i</span></div><div class="line">Kernel Interface table</div><div class="line">Iface       MTU Met    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg</div><div class="line">eth0       1500   0 151818887      0      0      0 198928403      0      0      0 BMRU</div><div class="line">lo        16436   0   107235      0      0      0   107235      0      0      0 LRU</div><div class="line">[root@andy ~]<span class="comment">#</span></div></pre></td></tr></table></figure>
<h3 id="实例6：显示组播组的关系"><a href="#实例6：显示组播组的关系" class="headerlink" title="实例6：显示组播组的关系"></a>实例6：显示组播组的关系</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">netstat -g</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div></pre></td><td class="code"><pre><div class="line">[root@andy ~]# netstat -g</div><div class="line">IPv6/IPv4 Group Memberships</div><div class="line">Interface       RefCnt Group</div><div class="line">--------------- ------ ---------------------</div><div class="line">lo              1      all-systems.mcast.net</div><div class="line">eth0            1      all-systems.mcast.net</div><div class="line">lo              1      ff02::1</div><div class="line">eth0            1      ff02::1:ffff:9b0c</div><div class="line">eth0            1      ff02::1</div><div class="line">[root@andy ~]#</div></pre></td></tr></table></figure>
<h3 id="实例7：显示网络统计信息"><a href="#实例7：显示网络统计信息" class="headerlink" title="实例7：显示网络统计信息"></a>实例7：显示网络统计信息</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">netstat -s</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div><div class="line">17</div><div class="line">18</div><div class="line">19</div><div class="line">20</div><div class="line">21</div><div class="line">22</div><div class="line">23</div><div class="line">24</div><div class="line">25</div><div class="line">26</div><div class="line">27</div><div class="line">28</div><div class="line">29</div><div class="line">30</div><div class="line">31</div><div class="line">32</div><div class="line">33</div><div class="line">34</div><div class="line">35</div><div class="line">36</div><div class="line">37</div><div class="line">38</div><div class="line">39</div><div class="line">40</div><div class="line">41</div><div class="line">42</div><div class="line">43</div><div class="line">44</div><div class="line">45</div><div class="line">46</div><div class="line">47</div><div class="line">48</div><div class="line">49</div><div class="line">50</div><div class="line">51</div><div class="line">52</div><div class="line">53</div><div class="line">54</div><div class="line">55</div><div class="line">56</div><div class="line">57</div><div class="line">58</div><div class="line">59</div><div class="line">60</div><div class="line">61</div><div class="line">62</div><div class="line">63</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># netstat -s</span></div><div class="line">Ip:</div><div class="line">    530999 total packets received</div><div class="line">    0 forwarded</div><div class="line">    0 incoming packets discarded</div><div class="line">    530999 incoming packets delivered</div><div class="line">    8258 requests sent out</div><div class="line">    1 dropped because of missing route</div><div class="line">Icmp:</div><div class="line">    90 ICMP messages received</div><div class="line">    0 input ICMP message failed.</div><div class="line">    ICMP input histogram:</div><div class="line">        destination unreachable: 17</div><div class="line">        <span class="built_in">echo</span> requests: 1</div><div class="line">        <span class="built_in">echo</span> replies: 72</div><div class="line">    106 ICMP messages sent</div><div class="line">    0 ICMP messages failed</div><div class="line">    ICMP output histogram:</div><div class="line">        destination unreachable: 8</div><div class="line">        <span class="built_in">echo</span> request: 97</div><div class="line">        <span class="built_in">echo</span> replies: 1</div><div class="line">IcmpMsg:</div><div class="line">        InType0: 72</div><div class="line">        InType3: 17</div><div class="line">        InType8: 1</div><div class="line">        OutType0: 1</div><div class="line">        OutType3: 8</div><div class="line">        OutType8: 97</div><div class="line">Tcp:</div><div class="line">    8 active connections openings</div><div class="line">    15 passive connection openings</div><div class="line">    8 failed connection attempts</div><div class="line">    3 connection resets received</div><div class="line">    1 connections established</div><div class="line">    3132 segments received</div><div class="line">    2617 segments send out</div><div class="line">    53 segments retransmited</div><div class="line">    0 bad segments received.</div><div class="line">    252 resets sent</div><div class="line">Udp:</div><div class="line">    0 packets received</div><div class="line">    0 packets to unknown port received.</div><div class="line">    0 packet receive errors</div><div class="line">    5482 packets sent</div><div class="line">TcpExt:</div><div class="line">    1 invalid SYN cookies received</div><div class="line">    1 TCP sockets finished time <span class="built_in">wait</span> <span class="keyword">in</span> fast timer</div><div class="line">    57 delayed acks sent</div><div class="line">    Quick ack mode was activated 50 <span class="built_in">times</span></div><div class="line">    60 packets directly queued to recvmsg prequeue.</div><div class="line">    68 packets directly received from backlog</div><div class="line">    4399 packets directly received from prequeue</div><div class="line">    520 packets header predicted</div><div class="line">    51 packets header predicted and directly queued to user</div><div class="line">    1194 acknowledgments not containing data received</div><div class="line">    21 predicted acknowledgments</div><div class="line">    0 TCP data loss events</div><div class="line">    1 timeouts after reno fast retransmit</div><div class="line">    9 retransmits <span class="keyword">in</span> slow start</div><div class="line">    42 other TCP timeouts</div><div class="line">    3 connections aborted due to timeout</div><div class="line">IpExt:</div><div class="line">    InBcastPkts: 527777</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>说明</strong></p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;按照各个协议分别显示其统计数据。如果我们的应用程序（如Web浏览器）运行速度比较慢，或者不能显示Web页之类的数据，那么我们就可以用本选项来查看一下所显示的信息。我们需要仔细查看统计数据的各行，找到出错的关键字，进而确定问题所在。</p>
<h3 id="实例8：显示监听的套接口"><a href="#实例8：显示监听的套接口" class="headerlink" title="实例8：显示监听的套接口"></a>实例8：显示监听的套接口</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">netstat -l</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># netstat -l</span></div><div class="line">Active Internet connections (only servers)</div><div class="line">Proto Recv-Q Send-Q Local Address               Foreign Address             State      </div><div class="line">tcp        0      0 localhost:smux              *:*                         LISTEN      </div><div class="line">tcp        0      0 *:svn                       *:*                         LISTEN      </div><div class="line">tcp        0      0 *:ssh                       *:*                         LISTEN      </div><div class="line">udp        0      0 localhost:syslog            *:*                                     </div><div class="line">udp        0      0 *:snmp                      *:*                                     </div><div class="line">Active UNIX domain sockets (only servers)</div><div class="line">Proto RefCnt Flags       Type       State         I-Node Path</div><div class="line">unix  2      [ ACC ]     STREAM     LISTENING     708833 /tmp/ssh-yKnDB15725/agent.15725</div><div class="line">unix  2      [ ACC ]     STREAM     LISTENING     7296   /var/run/audispd_events</div><div class="line">[root@localhost ~]<span class="comment">#</span></div></pre></td></tr></table></figure>
<h3 id="实例9：显示所有已建立的有效连接"><a href="#实例9：显示所有已建立的有效连接" class="headerlink" title="实例9：显示所有已建立的有效连接"></a>实例9：显示所有已建立的有效连接</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">netstat -n</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># netstat -n</span></div><div class="line">Active Internet connections (w/o servers)</div><div class="line">Proto Recv-Q Send-Q Local Address               Foreign Address             State      </div><div class="line">tcp        0    268 192.168.120.204:22          10.2.0.68:62420             ESTABLISHED </div><div class="line">Active UNIX domain sockets (w/o servers)</div><div class="line">Proto RefCnt Flags       Type       State         I-Node Path</div><div class="line">unix  2      [ ]         DGRAM                    1491   @/org/kernel/udev/udevd</div><div class="line">unix  4      [ ]         DGRAM                    7337   /dev/<span class="built_in">log</span></div><div class="line">unix  2      [ ]         DGRAM                    708823 </div><div class="line">unix  2      [ ]         DGRAM                    7539   </div><div class="line">unix  3      [ ]         STREAM     CONNECTED     7287   </div><div class="line">unix  3      [ ]         STREAM     CONNECTED     7286   </div><div class="line">[root@localhost ~]<span class="comment">#</span></div></pre></td></tr></table></figure>
<h3 id="实例10：显示关于以太网的统计数据"><a href="#实例10：显示关于以太网的统计数据" class="headerlink" title="实例10：显示关于以太网的统计数据"></a>实例10：显示关于以太网的统计数据</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">netstat -e</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># netstat -e</span></div><div class="line">Active Internet connections (w/o servers)</div><div class="line">Proto Recv-Q Send-Q Local Address               Foreign Address             State       User       Inode     </div><div class="line">tcp        0    248 192.168.120.204:ssh         10.2.0.68:62420             ESTABLISHED root       708795     </div><div class="line">Active UNIX domain sockets (w/o servers)</div><div class="line">Proto RefCnt Flags       Type       State         I-Node Path</div><div class="line">unix  2      [ ]         DGRAM                    1491   @/org/kernel/udev/udevd</div><div class="line">unix  4      [ ]         DGRAM                    7337   /dev/<span class="built_in">log</span></div><div class="line">unix  2      [ ]         DGRAM                    708823 </div><div class="line">unix  2      [ ]         DGRAM                    7539   </div><div class="line">unix  3      [ ]         STREAM     CONNECTED     7287   </div><div class="line">unix  3      [ ]         STREAM     CONNECTED     7286   </div><div class="line">[root@localhost ~]<span class="comment">#</span></div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>说明</strong></p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;用于显示关于以太网的统计数据。它列出的项目包括传送的数据报的总字节数、错误数、删除数、数据报的数量和广播的数量。这些统计数据既有发送的数据报数量，也有接收的数据报数量。这个选项可以用来统计一些基本的网络流量）</p>
<h3 id="实例11：显示关于路由表的信息"><a href="#实例11：显示关于路由表的信息" class="headerlink" title="实例11：显示关于路由表的信息"></a>实例11：显示关于路由表的信息</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">netstat -r</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># netstat -r</span></div><div class="line">Kernel IP routing table</div><div class="line">Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface</div><div class="line">192.168.120.0   *               255.255.255.0   U         0 0          0 eth0</div><div class="line">192.168.0.0     192.168.120.1   255.255.0.0     UG        0 0          0 eth0</div><div class="line">10.0.0.0        192.168.120.1   255.0.0.0       UG        0 0          0 eth0</div><div class="line">default         192.168.120.240 0.0.0.0         UG        0 0          0 eth0</div><div class="line">[root@localhost ~]<span class="comment">#</span></div></pre></td></tr></table></figure>
<h3 id="实例12：列出所有-tcp-端口"><a href="#实例12：列出所有-tcp-端口" class="headerlink" title="实例12：列出所有 tcp 端口"></a>实例12：列出所有 tcp 端口</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">netstat -at</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># netstat -at</span></div><div class="line">Active Internet connections (servers and established)</div><div class="line">Proto Recv-Q Send-Q Local Address               Foreign Address             State      </div><div class="line">tcp        0      0 localhost:smux              *:*                         LISTEN      </div><div class="line">tcp        0      0 *:svn                       *:*                         LISTEN      </div><div class="line">tcp        0      0 *:ssh                       *:*                         LISTEN      </div><div class="line">tcp        0    284 192.168.120.204:ssh         10.2.0.68:62420             ESTABLISHED </div><div class="line">[root@localhost ~]<span class="comment">#</span></div></pre></td></tr></table></figure>
<h3 id="实例13：统计机器中网络连接各个状态个数"><a href="#实例13：统计机器中网络连接各个状态个数" class="headerlink" title="实例13：统计机器中网络连接各个状态个数"></a>实例13：统计机器中网络连接各个状态个数</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">netstat -a | awk <span class="string">'/^tcp/ &#123;++S[$NF]&#125; END &#123;for(a in S) print a, S[a]&#125;'</span></div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># netstat -a | awk '/^tcp/ &#123;++S[$NF]&#125; END &#123;for(a in S) print a, S[a]&#125;'</span></div><div class="line">ESTABLISHED 1</div><div class="line">LISTEN 3</div><div class="line">[root@localhost ~]<span class="comment">#</span></div></pre></td></tr></table></figure>
<h3 id="实例14：把状态全都取出来后使用uniq-c统计后再进行排序"><a href="#实例14：把状态全都取出来后使用uniq-c统计后再进行排序" class="headerlink" title="实例14：把状态全都取出来后使用uniq -c统计后再进行排序"></a>实例14：把状态全都取出来后使用uniq -c统计后再进行排序</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">netstat -nat |awk <span class="string">'&#123;print $6&#125;'</span>|sort|uniq -c</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div></pre></td><td class="code"><pre><div class="line">[root@andy ~]<span class="comment"># netstat -nat |awk '&#123;print $6&#125;'|sort|uniq -c</span></div><div class="line">     14 CLOSE_WAIT</div><div class="line">      1 established)</div><div class="line">    578 ESTABLISHED</div><div class="line">      1 Foreign</div><div class="line">     43 LISTEN</div><div class="line">      5 TIME_WAIT</div><div class="line">[root@andy ~]<span class="comment"># netstat -nat |awk '&#123;print $6&#125;'|sort|uniq -c|sort -rn</span></div><div class="line">    576 ESTABLISHED</div><div class="line">     43 LISTEN</div><div class="line">     14 CLOSE_WAIT</div><div class="line">      5 TIME_WAIT</div><div class="line">      1 Foreign</div><div class="line">      1 established)</div><div class="line">[root@andy ~]<span class="comment">#</span></div></pre></td></tr></table></figure>
<h3 id="实例15：查看连接某服务端口最多的的IP地址"><a href="#实例15：查看连接某服务端口最多的的IP地址" class="headerlink" title="实例15：查看连接某服务端口最多的的IP地址"></a>实例15：查看连接某服务端口最多的的IP地址</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">netstat -nat | grep <span class="string">"192.168.120.20:16067"</span> |awk <span class="string">'&#123;print $5&#125;'</span>|awk -F: <span class="string">'&#123;print $4&#125;'</span>|sort|uniq -c|sort -nr|head -20</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div><div class="line">17</div><div class="line">18</div><div class="line">19</div><div class="line">20</div><div class="line">21</div><div class="line">22</div></pre></td><td class="code"><pre><div class="line">[root@andy ~]<span class="comment"># netstat -nat | grep "192.168.120.20:16067" |awk '&#123;print $5&#125;'|awk -F: '&#123;print $4&#125;'|sort|uniq -c|sort -nr|head -20</span></div><div class="line">      8 10.2.1.68</div><div class="line">      7 192.168.119.13</div><div class="line">      6 192.168.119.201</div><div class="line">      6 192.168.119.20</div><div class="line">      6 192.168.119.10</div><div class="line">      4 10.2.1.199</div><div class="line">      3 10.2.1.207</div><div class="line">      2 192.168.120.20</div><div class="line">      2 192.168.120.15</div><div class="line">      2 192.168.119.197</div><div class="line">      2 192.168.119.11</div><div class="line">      2 10.2.1.206</div><div class="line">      2 10.2.1.203</div><div class="line">      2 10.2.1.189</div><div class="line">      2 10.2.1.173</div><div class="line">      1 192.168.120.18</div><div class="line">      1 192.168.119.19</div><div class="line">      1 10.2.2.227</div><div class="line">      1 10.2.2.138</div><div class="line">      1 10.2.1.208</div><div class="line">[root@andy ~]<span class="comment">#</span></div></pre></td></tr></table></figure>
<h3 id="实例16：找出程序运行的端口"><a href="#实例16：找出程序运行的端口" class="headerlink" title="实例16：找出程序运行的端口"></a>实例16：找出程序运行的端口</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">netstat -ap | grep ssh</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div></pre></td><td class="code"><pre><div class="line">[root@andy ~]<span class="comment"># netstat -ap | grep ssh</span></div><div class="line">tcp        0      0 *:ssh                       *:*                         LISTEN      2570/sshd           </div><div class="line">tcp        0      0 ::ffff:192.168.120.206:ssh  ::ffff:10.2.1.205:54508     ESTABLISHED 13883/14            </div><div class="line">tcp        0      0 ::ffff:192.168.120.206:ssh  ::ffff:10.2.0.68:62886      ESTABLISHED 20900/6             </div><div class="line">tcp        0      0 ::ffff:192.168.120.206:ssh  ::ffff:10.2.2.131:52730     ESTABLISHED 20285/sshd: root@no </div><div class="line">unix  2      [ ACC ]     STREAM     LISTENING     194494461 20900/6             /tmp/ssh-cXIJj20900/agent.20900</div><div class="line">unix  3      [ ]         STREAM     CONNECTED     194307443 20285/sshd: root@no </div><div class="line">unix  3      [ ]         STREAM     CONNECTED     194307441 20285/sshd: root@no </div><div class="line">[root@andy ~]<span class="comment">#</span></div></pre></td></tr></table></figure>
<h3 id="实例17：在-netstat-输出中显示-PID-和进程名称"><a href="#实例17：在-netstat-输出中显示-PID-和进程名称" class="headerlink" title="实例17：在 netstat 输出中显示 PID 和进程名称"></a>实例17：在 netstat 输出中显示 PID 和进程名称</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">netstat -pt</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># netstat -pt</span></div><div class="line">Active Internet connections (w/o servers)</div><div class="line">Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   </div><div class="line">tcp        0    248 192.168.120.204:ssh         10.2.0.68:62420             ESTABLISHED 15725/0             </div><div class="line">[root@localhost ~]<span class="comment">#</span></div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>说明</strong></p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;netstat -p 可以与其它开关一起使用，就可以添加 “PID/进程名称” 到 netstat 输出中，这样 debugging 的时候可以很方便的发现特定端口运行的程序。</p>
<h3 id="实例18：找出运行在指定端口的进程"><a href="#实例18：找出运行在指定端口的进程" class="headerlink" title="实例18：找出运行在指定端口的进程"></a>实例18：找出运行在指定端口的进程</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">netstat -anpt | grep <span class="string">':16064'</span></div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div><div class="line">17</div></pre></td><td class="code"><pre><div class="line">[root@andy ~]<span class="comment"># netstat -anpt | grep ':16064'</span></div><div class="line">tcp        0      0 :::16064                    :::*                        LISTEN      24594/java          </div><div class="line">tcp        0      0 ::ffff:192.168.120.20:16064 ::ffff:192.168.119.201:6462 ESTABLISHED 24594/java          </div><div class="line">tcp        0      0 ::ffff:192.168.120.20:16064 ::ffff:192.168.119.20:26341 ESTABLISHED 24594/java          </div><div class="line">tcp        0      0 ::ffff:192.168.120.20:16064 ::ffff:192.168.119.20:32208 ESTABLISHED 24594/java          </div><div class="line">tcp        0      0 ::ffff:192.168.120.20:16064 ::ffff:192.168.119.20:32207 ESTABLISHED 24594/java          </div><div class="line">tcp        0      0 ::ffff:192.168.120.20:16064 ::ffff:10.2.1.68:51303      ESTABLISHED 24594/java          </div><div class="line">tcp        0      0 ::ffff:192.168.120.20:16064 ::ffff:10.2.1.68:51302      ESTABLISHED 24594/java          </div><div class="line">tcp        0      0 ::ffff:192.168.120.20:16064 ::ffff:10.2.1.68:50020      ESTABLISHED 24594/java          </div><div class="line">tcp        0      0 ::ffff:192.168.120.20:16064 ::ffff:10.2.1.68:50019      ESTABLISHED 24594/java          </div><div class="line">tcp        0      0 ::ffff:192.168.120.20:16064 ::ffff:10.2.1.68:56155      ESTABLISHED 24594/java          </div><div class="line">tcp        0      0 ::ffff:192.168.120.20:16064 ::ffff:10.2.1.68:50681      ESTABLISHED 24594/java          </div><div class="line">tcp        0      0 ::ffff:192.168.120.20:16064 ::ffff:10.2.1.68:50680      ESTABLISHED 24594/java          </div><div class="line">tcp        0      0 ::ffff:192.168.120.20:16064 ::ffff:10.2.1.68:52136      ESTABLISHED 24594/java          </div><div class="line">tcp        0      0 ::ffff:192.168.120.20:16064 ::ffff:10.2.1.68:56989      ESTABLISHED 24594/java          </div><div class="line">tcp        0      0 ::ffff:192.168.120.20:16064 ::ffff:10.2.1.68:56988      ESTABLISHED 24594/java          </div><div class="line">[root@andy ~]<span class="comment">#</span></div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>说明</strong></p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;运行在端口16064的进程id为24596，再通过ps命令就可以找到具体的应用程序了。</p>

	

	

</article>




	<article>
	
		<h1><a href="/2017/10/12/2. Linux 命令/56. Linux 命令- ping/">Linux 命令- ping</a></h1>
	
	<div class="article__infos">
		<span class="article__date">2017-10-12</span><br />
		
		
			<span class="article__tags">
			  	<a class="article__tag-link" href="/tags/Linux命令/">Linux命令</a>
			</span>
		
	</div>

	

	
		<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Linux系统的ping命令是常用的网络命令，它通常用来测试与目标主机的连通性，我们经常会说“ping一下某机器，看是不是开着”、不能打开网页时会说“你先ping网关地址192.168.1.1试试”。它通过发送ICMP ECHO_REQUEST数据包到网络主机（send ICMP ECHO_REQUEST to network hosts），并显示响应情况，这样我们就可以根据它输出的信息来确定目标主机是否可访问（但这不是绝对的）。有些服务器为了防止通过ping探测到，通过防火墙设置了禁止ping或者在内核参数中禁止ping，这样就不能通过ping确定该主机是否还处于开启状态。<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;linux下的ping和windows下的ping稍有区别,linux下ping不会自动终止,需要按ctrl+c终止或者用参数-c指定要求完成的回应次数。</p>
<h2 id="1-命令格式"><a href="#1-命令格式" class="headerlink" title="1.命令格式"></a>1.命令格式</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">ping [参数] [主机名或IP地址]</div></pre></td></tr></table></figure>
<h2 id="2-命令功能"><a href="#2-命令功能" class="headerlink" title="2.命令功能"></a>2.命令功能</h2><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ping命令用于：确定网络和各外部主机的状态；跟踪和隔离硬件和软件问题；测试、评估和管理网络。如果主机正在运行并连在网上，它就对回送信号进行响应。每个回送信号请求包含一个网际协议（IP）和 ICMP 头，后面紧跟一个 tim 结构，以及来填写这个信息包的足够的字节。缺省情况是连续发送回送信号请求直到接收到中断信号（Ctrl-C)。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ping 命令每秒发送一个数据报并且为每个接收到的响应打印一行输出。ping 命令计算信号往返时间和(信息)包丢失情况的统计信息，并且在完成之后显示一个简要总结。ping 命令在程序超时或当接收到 SIGINT 信号时结束。Host 参数或者是一个有效的主机名或者是因特网地址。</p>
<h2 id="3-命令参数"><a href="#3-命令参数" class="headerlink" title="3.命令参数"></a>3.命令参数</h2><ul>
<li>-d 使用Socket的SO_DEBUG功能。</li>
<li>-f  极限检测。大量且快速地送网络封包给一台机器，看它的回应。</li>
<li>-n 只输出数值。</li>
<li>-q 不显示任何传送封包的信息，只显示最后的结果。</li>
<li>-r 忽略普通的Routing Table，直接将数据包送到远端主机上。通常是查看本机的网络接口是否有问题。</li>
<li>-R 记录路由过程。</li>
<li>-v 详细显示指令的执行过程。</li>
<li><p>-c 数目：在发送指定数目的包后停止。</p></li>
<li>-i 秒数：设定间隔几秒送一个网络封包给一台机器，预设值是一秒送一次。</li>
<li>-I 网络界面：使用指定的网络界面送出数据包。</li>
<li>-l 前置载入：设置在送出要求信息之前，先行发出的数据包。</li>
<li>-p 范本样式：设置填满数据包的范本样式。</li>
<li>-s 字节数：指定发送的数据字节数，预设值是56，加上8字节的ICMP头，一共是64ICMP数据字节。</li>
<li>-t 存活数值：设置存活数值TTL的大小。</li>
</ul>
<h2 id="4-使用实例"><a href="#4-使用实例" class="headerlink" title="4.使用实例"></a>4.使用实例</h2><h3 id="实例1：ping的通的情况"><a href="#实例1：ping的通的情况" class="headerlink" title="实例1：ping的通的情况"></a>实例1：ping的通的情况</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">ping 192.168.120.205</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># ping 192.168.120.205</span></div><div class="line">PING 192.168.120.205 (192.168.120.205) 56(84) bytes of data.</div><div class="line">64 bytes from 192.168.120.205: icmp_seq=1 ttl=64 time=0.720 ms</div><div class="line">64 bytes from 192.168.120.205: icmp_seq=2 ttl=64 time=0.181 ms</div><div class="line">64 bytes from 192.168.120.205: icmp_seq=3 ttl=64 time=0.191 ms</div><div class="line">64 bytes from 192.168.120.205: icmp_seq=4 ttl=64 time=0.188 ms</div><div class="line">64 bytes from 192.168.120.205: icmp_seq=5 ttl=64 time=0.189 ms</div><div class="line"></div><div class="line">--- 192.168.120.205 ping statistics ---</div><div class="line">5 packets transmitted, 5 received, 0% packet loss, time 4000ms</div><div class="line">rtt min/avg/max/mdev = 0.181/0.293/0.720/0.214 ms</div><div class="line">[root@localhost ~]<span class="comment">#</span></div></pre></td></tr></table></figure>
<h3 id="实例2：ping不通的情况"><a href="#实例2：ping不通的情况" class="headerlink" title="实例2：ping不通的情况"></a>实例2：ping不通的情况</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">ping 192.168.120.202</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># ping 192.168.120.202</span></div><div class="line">PING 192.168.120.202 (192.168.120.202) 56(84) bytes of data.</div><div class="line">From 192.168.120.204 icmp_seq=1 Destination Host Unreachable</div><div class="line">From 192.168.120.204 icmp_seq=2 Destination Host Unreachable</div><div class="line">From 192.168.120.204 icmp_seq=3 Destination Host Unreachable</div><div class="line">From 192.168.120.204 icmp_seq=4 Destination Host Unreachable</div><div class="line">From 192.168.120.204 icmp_seq=5 Destination Host Unreachable</div><div class="line">From 192.168.120.204 icmp_seq=6 Destination Host Unreachable</div><div class="line"></div><div class="line">--- 192.168.120.202 ping statistics ---</div><div class="line">8 packets transmitted, 0 received, +6 errors, 100% packet loss, time 7005ms</div><div class="line">, pipe 4</div><div class="line">[root@localhost ~]<span class="comment">#</span></div></pre></td></tr></table></figure>
<h3 id="实例3：ping网关"><a href="#实例3：ping网关" class="headerlink" title="实例3：ping网关"></a>实例3：ping网关</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">ping -b 192.168.120.1</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div><div class="line">17</div><div class="line">18</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># route</span></div><div class="line">Kernel IP routing table</div><div class="line">Destination     Gateway         Genmask         Flags Metric Ref    Use Iface</div><div class="line">192.168.120.0   *               255.255.255.0   U     0      0        0 eth0</div><div class="line">192.168.0.0     192.168.120.1   255.255.0.0     UG    0      0        0 eth0</div><div class="line">10.0.0.0        192.168.120.1   255.0.0.0       UG    0      0        0 eth0</div><div class="line">default         192.168.120.240 0.0.0.0         UG    0      0        0 eth0</div><div class="line">[root@localhost ~]<span class="comment"># ping -b 192.168.120.1</span></div><div class="line">PING 192.168.120.1 (192.168.120.1) 56(84) bytes of data.</div><div class="line">64 bytes from 192.168.120.1: icmp_seq=1 ttl=255 time=2.02 ms</div><div class="line">64 bytes from 192.168.120.1: icmp_seq=2 ttl=255 time=1.83 ms</div><div class="line">64 bytes from 192.168.120.1: icmp_seq=3 ttl=255 time=1.68 ms</div><div class="line">64 bytes from 192.168.120.1: icmp_seq=4 ttl=255 time=1.98 ms</div><div class="line">64 bytes from 192.168.120.1: icmp_seq=5 ttl=255 time=1.88 ms</div><div class="line"></div><div class="line">--- 192.168.120.1 ping statistics ---</div><div class="line">5 packets transmitted, 5 received, 0% packet loss, time 4000ms</div><div class="line">rtt min/avg/max/mdev = 1.682/1.880/2.020/0.129 ms</div></pre></td></tr></table></figure>
<h3 id="实例4：ping指定次数"><a href="#实例4：ping指定次数" class="headerlink" title="实例4：ping指定次数"></a>实例4：ping指定次数</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">ping -c 10 192.168.120.206</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div><div class="line">17</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># ping -c 10 192.168.120.206</span></div><div class="line">PING 192.168.120.206 (192.168.120.206) 56(84) bytes of data.</div><div class="line">64 bytes from 192.168.120.206: icmp_seq=1 ttl=64 time=1.25 ms</div><div class="line">64 bytes from 192.168.120.206: icmp_seq=2 ttl=64 time=0.260 ms</div><div class="line">64 bytes from 192.168.120.206: icmp_seq=3 ttl=64 time=0.242 ms</div><div class="line">64 bytes from 192.168.120.206: icmp_seq=4 ttl=64 time=0.271 ms</div><div class="line">64 bytes from 192.168.120.206: icmp_seq=5 ttl=64 time=0.274 ms</div><div class="line">64 bytes from 192.168.120.206: icmp_seq=6 ttl=64 time=0.295 ms</div><div class="line">64 bytes from 192.168.120.206: icmp_seq=7 ttl=64 time=0.269 ms</div><div class="line">64 bytes from 192.168.120.206: icmp_seq=8 ttl=64 time=0.270 ms</div><div class="line">64 bytes from 192.168.120.206: icmp_seq=9 ttl=64 time=0.253 ms</div><div class="line">64 bytes from 192.168.120.206: icmp_seq=10 ttl=64 time=0.289 ms</div><div class="line"></div><div class="line">--- 192.168.120.206 ping statistics ---</div><div class="line">10 packets transmitted, 10 received, 0% packet loss, time 9000ms</div><div class="line">rtt min/avg/max/mdev = 0.242/0.367/1.251/0.295 ms</div><div class="line">[root@localhost ~]<span class="comment">#</span></div></pre></td></tr></table></figure>
<h3 id="实例5：时间间隔和次数限制的ping"><a href="#实例5：时间间隔和次数限制的ping" class="headerlink" title="实例5：时间间隔和次数限制的ping"></a>实例5：时间间隔和次数限制的ping</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">ping -c 10 -i 0.5 192.168.120.206</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div><div class="line">17</div><div class="line">18</div><div class="line">19</div><div class="line">20</div><div class="line">21</div><div class="line">22</div><div class="line">23</div><div class="line">24</div><div class="line">25</div><div class="line">26</div><div class="line">27</div><div class="line">28</div><div class="line">29</div><div class="line">30</div><div class="line">31</div><div class="line">32</div><div class="line">33</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># ping -c 10 -i 0.5 192.168.120.206</span></div><div class="line">PING 192.168.120.206 (192.168.120.206) 56(84) bytes of data.</div><div class="line">64 bytes from 192.168.120.206: icmp_seq=1 ttl=64 time=1.24 ms</div><div class="line">64 bytes from 192.168.120.206: icmp_seq=2 ttl=64 time=0.235 ms</div><div class="line">64 bytes from 192.168.120.206: icmp_seq=3 ttl=64 time=0.244 ms</div><div class="line">64 bytes from 192.168.120.206: icmp_seq=4 ttl=64 time=0.300 ms</div><div class="line">64 bytes from 192.168.120.206: icmp_seq=5 ttl=64 time=0.255 ms</div><div class="line">64 bytes from 192.168.120.206: icmp_seq=6 ttl=64 time=0.264 ms</div><div class="line">64 bytes from 192.168.120.206: icmp_seq=7 ttl=64 time=0.263 ms</div><div class="line">64 bytes from 192.168.120.206: icmp_seq=8 ttl=64 time=0.331 ms</div><div class="line">64 bytes from 192.168.120.206: icmp_seq=9 ttl=64 time=0.247 ms</div><div class="line">64 bytes from 192.168.120.206: icmp_seq=10 ttl=64 time=0.244 ms</div><div class="line"></div><div class="line">--- 192.168.120.206 ping statistics ---</div><div class="line">10 packets transmitted, 10 received, 0% packet loss, time 4499ms</div><div class="line">rtt min/avg/max/mdev = 0.235/0.362/1.241/0.294 ms</div><div class="line">[root@localhost ~]<span class="comment"># ping -c 10 -i 0.01 192.168.120.206</span></div><div class="line">PING 192.168.120.206 (192.168.120.206) 56(84) bytes of data.</div><div class="line">64 bytes from 192.168.120.206: icmp_seq=1 ttl=64 time=0.244 ms</div><div class="line">64 bytes from 192.168.120.206: icmp_seq=2 ttl=64 time=0.195 ms</div><div class="line">64 bytes from 192.168.120.206: icmp_seq=3 ttl=64 time=0.219 ms</div><div class="line">64 bytes from 192.168.120.206: icmp_seq=4 ttl=64 time=0.204 ms</div><div class="line">64 bytes from 192.168.120.206: icmp_seq=5 ttl=64 time=3.56 ms</div><div class="line">64 bytes from 192.168.120.206: icmp_seq=6 ttl=64 time=1.93 ms</div><div class="line">64 bytes from 192.168.120.206: icmp_seq=7 ttl=64 time=0.193 ms</div><div class="line">64 bytes from 192.168.120.206: icmp_seq=8 ttl=64 time=0.193 ms</div><div class="line">64 bytes from 192.168.120.206: icmp_seq=9 ttl=64 time=0.202 ms</div><div class="line">64 bytes from 192.168.120.206: icmp_seq=10 ttl=64 time=0.211 ms</div><div class="line"></div><div class="line">--- 192.168.120.206 ping statistics ---</div><div class="line">10 packets transmitted, 10 received, 0% packet loss, time 90ms</div><div class="line">rtt min/avg/max/mdev = 0.193/0.716/3.564/1.080 ms</div><div class="line">[root@localhost ~]<span class="comment">#</span></div></pre></td></tr></table></figure>
<h3 id="实例6：通过域名ping公网上的站点"><a href="#实例6：通过域名ping公网上的站点" class="headerlink" title="实例6：通过域名ping公网上的站点"></a>实例6：通过域名ping公网上的站点</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">ping -c 5 www.58.com</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div></pre></td><td class="code"><pre><div class="line">peida-VirtualBox ~ <span class="comment"># ping -c 5 www.58.com</span></div><div class="line">PING www.58.com (211.151.111.30) 56(84) bytes of data.</div><div class="line">64 bytes from 211.151.111.30: icmp_req=1 ttl=49 time=14.7 ms</div><div class="line">64 bytes from 211.151.111.30: icmp_req=2 ttl=49 time=16.4 ms</div><div class="line">64 bytes from 211.151.111.30: icmp_req=3 ttl=49 time=15.2 ms</div><div class="line">64 bytes from 211.151.111.30: icmp_req=4 ttl=49 time=14.6 ms</div><div class="line">64 bytes from 211.151.111.30: icmp_req=5 ttl=49 time=19.9 ms</div><div class="line"></div><div class="line">--- www.58.com ping statistics ---</div><div class="line">5 packets transmitted, 5 received, 0% packet loss, time 20101ms</div><div class="line">rtt min/avg/max/mdev = 14.618/16.192/19.917/1.965 ms</div><div class="line">peida-VirtualBox ~ <span class="comment">#</span></div></pre></td></tr></table></figure>
<h3 id="实例7：多参数使用"><a href="#实例7：多参数使用" class="headerlink" title="实例7：多参数使用"></a>实例7：多参数使用</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">ping -i 3 -s 1024 -t 255 192.168.120.206</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div><div class="line">17</div><div class="line">18</div><div class="line">19</div><div class="line">20</div><div class="line">21</div><div class="line">22</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># ping -i 3 -s 1024 -t 255 192.168.120.206</span></div><div class="line">PING 192.168.120.206 (192.168.120.206) 1024(1052) bytes of data.</div><div class="line">1032 bytes from 192.168.120.206: icmp_seq=1 ttl=64 time=1.99 ms</div><div class="line">1032 bytes from 192.168.120.206: icmp_seq=2 ttl=64 time=0.694 ms</div><div class="line">1032 bytes from 192.168.120.206: icmp_seq=3 ttl=64 time=0.300 ms</div><div class="line">1032 bytes from 192.168.120.206: icmp_seq=4 ttl=64 time=0.481 ms</div><div class="line">1032 bytes from 192.168.120.206: icmp_seq=5 ttl=64 time=0.415 ms</div><div class="line">1032 bytes from 192.168.120.206: icmp_seq=6 ttl=64 time=0.600 ms</div><div class="line">1032 bytes from 192.168.120.206: icmp_seq=7 ttl=64 time=0.411 ms</div><div class="line">1032 bytes from 192.168.120.206: icmp_seq=8 ttl=64 time=0.281 ms</div><div class="line">1032 bytes from 192.168.120.206: icmp_seq=9 ttl=64 time=0.318 ms</div><div class="line">1032 bytes from 192.168.120.206: icmp_seq=10 ttl=64 time=0.362 ms</div><div class="line">1032 bytes from 192.168.120.206: icmp_seq=11 ttl=64 time=0.408 ms</div><div class="line">1032 bytes from 192.168.120.206: icmp_seq=12 ttl=64 time=0.445 ms</div><div class="line">1032 bytes from 192.168.120.206: icmp_seq=13 ttl=64 time=0.397 ms</div><div class="line">1032 bytes from 192.168.120.206: icmp_seq=14 ttl=64 time=0.406 ms</div><div class="line">1032 bytes from 192.168.120.206: icmp_seq=15 ttl=64 time=0.458 ms</div><div class="line"></div><div class="line">--- 192.168.120.206 ping statistics ---</div><div class="line">15 packets transmitted, 15 received, 0% packet loss, time 41999ms</div><div class="line">rtt min/avg/max/mdev = 0.281/0.531/1.993/0.404 ms</div><div class="line">[root@localhost ~]<span class="comment">#</span></div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>说明</strong></p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;-i 3 发送周期为 3秒 -s 设置发送包的大小为1024 -t 设置TTL值为 255</p>

	

	

</article>




	<article>
	
		<h1><a href="/2017/10/12/2. Linux 命令/55. Linux 命令- route/">Linux 命令- route</a></h1>
	
	<div class="article__infos">
		<span class="article__date">2017-10-12</span><br />
		
		
			<span class="article__tags">
			  	<a class="article__tag-link" href="/tags/Linux命令/">Linux命令</a>
			</span>
		
	</div>

	

	
		<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Linux系统的route命令用于显示和操作IP路由表（show / manipulate the IP routing table）。要实现两个不同的子网之间的通信，需要一台连接两个网络的路由器，或者同时位于两个网络的网关来实现。在Linux系统中，设置路由通常是为了解决以下问题：该Linux系统在一个局域网中，局域网中有一个网关，能够让机器访问Internet，那么就需要将这台机器的IP地址设置为Linux机器的默认路由。要注意的是，直接在命令行下执行route命令来添加路由，不会永久保存，当网卡重启或者机器重启之后，该路由就失效了；可以在/etc/rc.local中添加route命令来保证该路由设置永久有效。</p>
<h2 id="1．命令格式"><a href="#1．命令格式" class="headerlink" title="1．命令格式"></a>1．命令格式</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">route [-f] [-p] [Command [Destination] [mask Netmask] [Gateway] [metric Metric]] [<span class="keyword">if</span> Interface]]</div></pre></td></tr></table></figure>
<h2 id="2．命令功能"><a href="#2．命令功能" class="headerlink" title="2．命令功能"></a>2．命令功能</h2><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Route命令是用于操作基于内核ip路由表，它的主要作用是创建一个静态路由让指定一个主机或者一个网络通过一个网络接口，如eth0。当使用”add”或者”del”参数时，路由表被修改，如果没有参数，则显示路由表当前的内容。</p>
<h2 id="3．命令参数"><a href="#3．命令参数" class="headerlink" title="3．命令参数"></a>3．命令参数</h2><ul>
<li>-c 显示更多信息</li>
<li>-n 不解析名字</li>
<li>-v 显示详细的处理信息</li>
<li>-F 显示发送信息</li>
<li>-C 显示路由缓存</li>
<li>-f 清除所有网关入口的路由表。 </li>
<li><p>-p 与 add 命令一起使用时使路由具有永久性。</p>
</li>
<li><p>add:添加一条新路由。</p>
</li>
<li>del:删除一条路由。</li>
<li>-net:目标地址是一个网络。</li>
<li>-host:目标地址是一个主机。</li>
<li>netmask:当添加一个网络路由时，需要使用网络掩码。</li>
<li>gw:路由数据包通过网关。注意，你指定的网关必须能够达到。</li>
<li>metric：设置路由跳数。</li>
<li>Command 指定您想运行的命令 (Add/Change/Delete/Print)。 </li>
<li>Destination 指定该路由的网络目标。 </li>
<li>mask Netmask 指定与网络目标相关的网络掩码（也被称作子网掩码）。 </li>
<li>Gateway 指定网络目标定义的地址集和子网掩码可以到达的前进或下一跃点 IP 地址。 </li>
<li>metric Metric 为路由指定一个整数成本值标（从 1 至 9999），当在路由表(与转发的数据包目标地址最匹配)的多个路由中进行选择时可以使用。 </li>
<li>if Interface 为可以访问目标的接口指定接口索引。若要获得一个接口列表和它们相应的接口索引，使用 route print 命令的显示功能。可以使用十进制或十六进制值进行接口索引。</li>
</ul>
<h2 id="4．使用实例"><a href="#4．使用实例" class="headerlink" title="4．使用实例"></a>4．使用实例</h2><h3 id="实例1：显示当前路由"><a href="#实例1：显示当前路由" class="headerlink" title="实例1：显示当前路由"></a>实例1：显示当前路由</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div></pre></td><td class="code"><pre><div class="line">route</div><div class="line">route -n</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># route</span></div><div class="line">Kernel IP routing table</div><div class="line">Destination     Gateway         Genmask         Flags Metric Ref    Use Iface</div><div class="line">192.168.120.0   *               255.255.255.0   U     0      0        0 eth0</div><div class="line">e192.168.0.0     192.168.120.1   255.255.0.0     UG    0      0        0 eth0</div><div class="line">10.0.0.0        192.168.120.1   255.0.0.0       UG    0      0        0 eth0</div><div class="line">default         192.168.120.240 0.0.0.0         UG    0      0        0 eth0</div><div class="line">[root@localhost ~]<span class="comment"># route -n</span></div><div class="line">Kernel IP routing table</div><div class="line">Destination     Gateway         Genmask         Flags Metric Ref    Use Iface</div><div class="line">192.168.120.0   0.0.0.0         255.255.255.0   U     0      0        0 eth0</div><div class="line">192.168.0.0     192.168.120.1   255.255.0.0     UG    0      0        0 eth0</div><div class="line">10.0.0.0        192.168.120.1   255.0.0.0       UG    0      0        0 eth0</div><div class="line">0.0.0.0         192.168.120.240 0.0.0.0         UG    0      0        0 eth0</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>说明</strong></p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;第一行表示主机所在网络的地址为192.168.120.0，若数据传送目标是在本局域网内通信，则可直接通过eth0转发数据包;</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;第四行表示数据传送目的是访问Internet，则由接口eth0，将数据包发送到网关192.168.120.240 </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;其中Flags为路由标志，标记当前网络节点的状态。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>Flags标志说明：</strong></p>
<ul>
<li>U Up表示此路由当前为启动状态</li>
<li>H Host，表示此网关为一主机</li>
<li>G Gateway，表示此网关为一路由器</li>
<li>R Reinstate Route，使用动态路由重新初始化的路由</li>
<li>D Dynamically,此路由是动态性地写入</li>
<li>M Modified，此路由是由路由守护程序或导向器动态修改</li>
<li>! 表示此路由当前为关闭状态</li>
</ul>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;备注：</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;route -n (-n 表示不解析名字,列出速度会比route 快)</p>
<h3 id="实例2：添加网关-设置网关"><a href="#实例2：添加网关-设置网关" class="headerlink" title="实例2：添加网关/设置网关"></a>实例2：添加网关/设置网关</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0</span></div><div class="line">[root@localhost ~]<span class="comment"># route</span></div><div class="line">Kernel IP routing table</div><div class="line">Destination     Gateway         Genmask         Flags Metric Ref    Use Iface</div><div class="line">192.168.120.0   *               255.255.255.0   U     0      0        0 eth0</div><div class="line">192.168.0.0     192.168.120.1   255.255.0.0     UG    0      0        0 eth0</div><div class="line">10.0.0.0        192.168.120.1   255.0.0.0       UG    0      0        0 eth0</div><div class="line">224.0.0.0       *               240.0.0.0       U     0      0        0 eth0</div><div class="line">default         192.168.120.240 0.0.0.0         UG    0      0        0 eth0</div><div class="line">[root@localhost ~]<span class="comment">#</span></div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>说明</strong></p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;增加一条 到达244.0.0.0的路由</p>
<h3 id="实例3：屏蔽一条路由"><a href="#实例3：屏蔽一条路由" class="headerlink" title="实例3：屏蔽一条路由"></a>实例3：屏蔽一条路由</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">route add -net 224.0.0.0 netmask 240.0.0.0 reject</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># route add -net 224.0.0.0 netmask 240.0.0.0 reject</span></div><div class="line">[root@localhost ~]<span class="comment"># route</span></div><div class="line">Kernel IP routing table</div><div class="line">Destination     Gateway         Genmask         Flags Metric Ref    Use Iface</div><div class="line">192.168.120.0   *               255.255.255.0   U     0      0        0 eth0</div><div class="line">192.168.0.0     192.168.120.1   255.255.0.0     UG    0      0        0 eth0</div><div class="line">10.0.0.0        192.168.120.1   255.0.0.0       UG    0      0        0 eth0</div><div class="line">224.0.0.0       -               240.0.0.0       !     0      -        0 -</div><div class="line">224.0.0.0       *               240.0.0.0       U     0      0        0 eth0</div><div class="line">default         192.168.120.240 0.0.0.0         UG    0      0        0 eth0</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>说明</strong></p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;增加一条屏蔽的路由，目的地址为 224.x.x.x 将被拒绝</p>
<h3 id="实例4：删除路由记录"><a href="#实例4：删除路由记录" class="headerlink" title="实例4：删除路由记录"></a>实例4：删除路由记录</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div></pre></td><td class="code"><pre><div class="line">route del -net 224.0.0.0 netmask 240.0.0.0</div><div class="line">route del -net 224.0.0.0 netmask 240.0.0.0 reject</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div><div class="line">17</div><div class="line">18</div><div class="line">19</div><div class="line">20</div><div class="line">21</div><div class="line">22</div><div class="line">23</div><div class="line">24</div><div class="line">25</div><div class="line">26</div><div class="line">27</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># route</span></div><div class="line">Kernel IP routing table</div><div class="line">Destination     Gateway         Genmask         Flags Metric Ref    Use Iface</div><div class="line">192.168.120.0   *               255.255.255.0   U     0      0        0 eth0</div><div class="line">192.168.0.0     192.168.120.1   255.255.0.0     UG    0      0        0 eth0</div><div class="line">10.0.0.0        192.168.120.1   255.0.0.0       UG    0      0        0 eth0</div><div class="line">224.0.0.0       -               240.0.0.0       !     0      -        0 -</div><div class="line">224.0.0.0       *               240.0.0.0       U     0      0        0 eth0</div><div class="line">default         192.168.120.240 0.0.0.0         UG    0      0        0 eth0</div><div class="line">[root@localhost ~]<span class="comment"># route del -net 224.0.0.0 netmask 240.0.0.0</span></div><div class="line">[root@localhost ~]<span class="comment"># route</span></div><div class="line">Kernel IP routing table</div><div class="line">Destination     Gateway         Genmask         Flags Metric Ref    Use Iface</div><div class="line">192.168.120.0   *               255.255.255.0   U     0      0        0 eth0</div><div class="line">192.168.0.0     192.168.120.1   255.255.0.0     UG    0      0        0 eth0</div><div class="line">10.0.0.0        192.168.120.1   255.0.0.0       UG    0      0        0 eth0</div><div class="line">224.0.0.0       -               240.0.0.0       !     0      -        0 -</div><div class="line">default         192.168.120.240 0.0.0.0         UG    0      0        0 eth0</div><div class="line">[root@localhost ~]<span class="comment"># route del -net 224.0.0.0 netmask 240.0.0.0 reject</span></div><div class="line">[root@localhost ~]<span class="comment"># route</span></div><div class="line">Kernel IP routing table</div><div class="line">Destination     Gateway         Genmask         Flags Metric Ref    Use Iface</div><div class="line">192.168.120.0   *               255.255.255.0   U     0      0        0 eth0</div><div class="line">192.168.0.0     192.168.120.1   255.255.0.0     UG    0      0        0 eth0</div><div class="line">10.0.0.0        192.168.120.1   255.0.0.0       UG    0      0        0 eth0</div><div class="line">default         192.168.120.240 0.0.0.0         UG    0      0        0 eth0</div><div class="line">[root@localhost ~]<span class="comment">#</span></div></pre></td></tr></table></figure>
<h3 id="实例5：删除和添加设置默认网关"><a href="#实例5：删除和添加设置默认网关" class="headerlink" title="实例5：删除和添加设置默认网关"></a>实例5：删除和添加设置默认网关</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div></pre></td><td class="code"><pre><div class="line">route del default gw 192.168.120.240</div><div class="line">route add default gw 192.168.120.240</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># route del default gw 192.168.120.240</span></div><div class="line">[root@localhost ~]<span class="comment"># route</span></div><div class="line">Kernel IP routing table</div><div class="line">Destination     Gateway         Genmask         Flags Metric Ref    Use Iface</div><div class="line">192.168.120.0   *               255.255.255.0   U     0      0        0 eth0</div><div class="line">192.168.0.0     192.168.120.1   255.255.0.0     UG    0      0        0 eth0</div><div class="line">10.0.0.0        192.168.120.1   255.0.0.0       UG    0      0        0 eth0</div><div class="line">[root@localhost ~]<span class="comment"># route add default gw 192.168.120.240</span></div><div class="line">[root@localhost ~]<span class="comment"># route</span></div><div class="line">Kernel IP routing table</div><div class="line">Destination     Gateway         Genmask         Flags Metric Ref    Use Iface</div><div class="line">192.168.120.0   *               255.255.255.0   U     0      0        0 eth0</div><div class="line">192.168.0.0     192.168.120.1   255.255.0.0     UG    0      0        0 eth0</div><div class="line">10.0.0.0        192.168.120.1   255.0.0.0       UG    0      0        0 eth0</div><div class="line">default         192.168.120.240 0.0.0.0         UG    0      0        0 eth0</div><div class="line">[root@localhost ~]<span class="comment">#</span></div></pre></td></tr></table></figure>
	

	

</article>




	<article>
	
		<h1><a href="/2017/10/12/2. Linux 命令/54. Linux 命令- ifconfig/">Linux 命令- ifconfig</a></h1>
	
	<div class="article__infos">
		<span class="article__date">2017-10-12</span><br />
		
		
			<span class="article__tags">
			  	<a class="article__tag-link" href="/tags/Linux命令/">Linux命令</a>
			</span>
		
	</div>

	

	
		<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;许多windows非常熟悉ipconfig命令行工具，它被用来获取网络接口配置信息并对此进行修改。Linux系统拥有一个类似的工具，也就是ifconfig(interfaces config)。通常需要以root身份登录或使用sudo以便在Linux机器上使用ifconfig工具。依赖于ifconfig命令中使用一些选项属性，ifconfig工具不仅可以被用来简单地获取网络接口配置信息，还可以修改这些配置。</p>
<h2 id="1．命令格式"><a href="#1．命令格式" class="headerlink" title="1．命令格式"></a>1．命令格式</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">ifconfig [网络设备] [参数]</div></pre></td></tr></table></figure>
<h2 id="2．命令功能"><a href="#2．命令功能" class="headerlink" title="2．命令功能"></a>2．命令功能</h2><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ifconfig 命令用来查看和配置网络设备。当网络环境发生改变时可通过此命令对网络进行相应的配置。</p>
<h2 id="3．命令参数"><a href="#3．命令参数" class="headerlink" title="3．命令参数"></a>3．命令参数</h2><ul>
<li>up 启动指定网络设备/网卡。</li>
<li>down 关闭指定网络设备/网卡。该参数可以有效地阻止通过指定接口的IP信息流，如果想永久地关闭一个接口，我们还需要从核心路由表中将该接口的路由信息全部删除。</li>
<li>arp 设置指定网卡是否支持ARP协议。</li>
<li>-promisc 设置是否支持网卡的promiscuous模式，如果选择此参数，网卡将接收网络中发给它所有的数据包</li>
<li>-allmulti 设置是否支持多播模式，如果选择此参数，网卡将接收网络中所有的多播数据包</li>
<li>-a 显示全部接口信息</li>
<li>-s 显示摘要信息（类似于 netstat -i）</li>
<li>add 给指定网卡配置IPv6地址</li>
<li>del 删除指定网卡的IPv6地址</li>
<li>&lt;硬件地址&gt; 配置网卡最大的传输单元</li>
<li>mtu&lt;字节数&gt; 设置网卡的最大传输单元 (bytes)</li>
<li>netmask&lt;子网掩码&gt; 设置网卡的子网掩码。掩码可以是有前缀0x的32位十六进制数，也可以是用点分开的4个十进制数。如果不打算将网络分成子网，可以不管这一选项；如果要使用子网，那么请记住，网络中每一个系统必须有相同子网掩码。</li>
<li>tunel 建立隧道</li>
<li>dstaddr 设定一个远端地址，建立点对点通信</li>
<li>-broadcast&lt;地址&gt; 为指定网卡设置广播协议</li>
<li>-pointtopoint&lt;地址&gt; 为网卡设置点对点通讯协议</li>
<li>multicast 为网卡设置组播标志</li>
<li>address 为网卡设置IPv4地址</li>
<li>txqueuelen&lt;长度&gt; 为网卡设置传输列队的长度</li>
</ul>
<h2 id="4．使用实例"><a href="#4．使用实例" class="headerlink" title="4．使用实例"></a>4．使用实例</h2><h3 id="实例1：显示网络设备信息（激活状态的）"><a href="#实例1：显示网络设备信息（激活状态的）" class="headerlink" title="实例1：显示网络设备信息（激活状态的）"></a>实例1：显示网络设备信息（激活状态的）</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">ifconfig</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># ifconfig</span></div><div class="line">eth0      Link encap:Ethernet  HWaddr 00:50:56:BF:26:20  </div><div class="line">          inet addr:192.168.120.204  Bcast:192.168.120.255  Mask:255.255.255.0</div><div class="line">          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1</div><div class="line">          RX packets:8700857 errors:0 dropped:0 overruns:0 frame:0</div><div class="line">          TX packets:31533 errors:0 dropped:0 overruns:0 carrier:0</div><div class="line">          collisions:0 txqueuelen:1000 </div><div class="line">          RX bytes:596390239 (568.7 MiB)  TX bytes:2886956 (2.7 MiB)</div><div class="line"></div><div class="line">lo        Link encap:Local Loopback  </div><div class="line">          inet addr:127.0.0.1  Mask:255.0.0.0</div><div class="line">          UP LOOPBACK RUNNING  MTU:16436  Metric:1</div><div class="line">          RX packets:68 errors:0 dropped:0 overruns:0 frame:0</div><div class="line">          TX packets:68 errors:0 dropped:0 overruns:0 carrier:0</div><div class="line">          collisions:0 txqueuelen:0 </div><div class="line">          RX bytes:2856 (2.7 KiB)  TX bytes:2856 (2.7 KiB)</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>说明</strong></p>
<ul>
<li>eth0 表示第一块网卡， 其中 HWaddr 表示网卡的物理地址，可以看到目前这个网卡的物理地址(MAC地址）是 00:50:56:BF:26:20</li>
<li>inet addr 用来表示网卡的IP地址，此网卡的 IP地址是 192.168.120.204，广播地址， Bcast:192.168.120.255，掩码地址Mask:255.255.255.0 </li>
<li>lo 是表示主机的回坏地址，这个一般是用来测试一个网络程序，但又不想让局域网或外网的用户能够查看，只能在此台主机上运行和查看所用的网络接口。比如把 HTTPD服务器的指定到回坏地址，在浏览器输入 127.0.0.1 就能看到你所架WEB网站了。但只是您能看得到，局域网的其它主机或用户无从知道。</li>
<li>第一行：连接类型：Ethernet（以太网）HWaddr（硬件mac地址）</li>
<li>第二行：网卡的IP地址、子网、掩码</li>
<li>第三行：UP（代表网卡开启状态）RUNNING（代表网卡的网线被接上）MULTICAST（支持组播）MTU:1500（最大传输单元）：1500字节</li>
<li>第四、五行：接收、发送数据包情况统计</li>
<li>第七行：接收、发送数据字节数统计信息。</li>
</ul>
<h3 id="实例2：启动关闭指定网卡"><a href="#实例2：启动关闭指定网卡" class="headerlink" title="实例2：启动关闭指定网卡"></a>实例2：启动关闭指定网卡</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div></pre></td><td class="code"><pre><div class="line">ifconfig eth0 up</div><div class="line">ifconfig eth0 down</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>说明</strong><br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ifconfig eth0 up 为启动网卡eth0 ；ifconfig eth0 down 为关闭网卡eth0。ssh登陆linux服务器操作要小心，关闭了就不能开启了，除非你有多网卡。</p>
<h3 id="实例3：为网卡配置和删除IPv6地址"><a href="#实例3：为网卡配置和删除IPv6地址" class="headerlink" title="实例3：为网卡配置和删除IPv6地址"></a>实例3：为网卡配置和删除IPv6地址</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div></pre></td><td class="code"><pre><div class="line">ifconfig eth0 add 33ffe:3240:800:1005::2/64</div><div class="line">ifconfig eth0 del 33ffe:3240:800:1005::2/64</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>说明</strong></p>
<ul>
<li>ifconfig eth0 add 33ffe:3240:800:1005::2/64 为网卡eth0配置IPv6地址；</li>
<li>ifconfig eth0 add 33ffe:3240:800:1005::2/64 为网卡eth0删除IPv6地址；</li>
</ul>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>练习的时候，ssh登陆linux服务器操作要小心，关闭了就不能开启了，除非有多网卡。</strong></p>
<h3 id="实例4：用ifconfig修改MAC地址"><a href="#实例4：用ifconfig修改MAC地址" class="headerlink" title="实例4：用ifconfig修改MAC地址"></a>实例4：用ifconfig修改MAC地址</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div><div class="line">17</div><div class="line">18</div><div class="line">19</div><div class="line">20</div><div class="line">21</div><div class="line">22</div><div class="line">23</div><div class="line">24</div><div class="line">25</div><div class="line">26</div><div class="line">27</div><div class="line">28</div><div class="line">29</div><div class="line">30</div><div class="line">31</div><div class="line">32</div><div class="line">33</div><div class="line">34</div><div class="line">35</div><div class="line">36</div><div class="line">37</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># ifconfig eth0 down //关闭网卡</span></div><div class="line">[root@localhost ~]<span class="comment"># ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE //修改MAC地址</span></div><div class="line">[root@localhost ~]<span class="comment"># ifconfig eth0 up //启动网卡</span></div><div class="line">[root@localhost ~]<span class="comment"># ifconfig</span></div><div class="line">eth0      Link encap:Ethernet  HWaddr 00:AA:BB:CC:DD:EE  </div><div class="line">          inet addr:192.168.120.204  Bcast:192.168.120.255  Mask:255.255.255.0</div><div class="line">          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1</div><div class="line">          RX packets:8700857 errors:0 dropped:0 overruns:0 frame:0</div><div class="line">          TX packets:31533 errors:0 dropped:0 overruns:0 carrier:0</div><div class="line">          collisions:0 txqueuelen:1000 </div><div class="line">          RX bytes:596390239 (568.7 MiB)  TX bytes:2886956 (2.7 MiB)</div><div class="line"></div><div class="line">lo        Link encap:Local Loopback  </div><div class="line">          inet addr:127.0.0.1  Mask:255.0.0.0</div><div class="line">          UP LOOPBACK RUNNING  MTU:16436  Metric:1</div><div class="line">          RX packets:68 errors:0 dropped:0 overruns:0 frame:0</div><div class="line">          TX packets:68 errors:0 dropped:0 overruns:0 carrier:0</div><div class="line">          collisions:0 txqueuelen:0 </div><div class="line">          RX bytes:2856 (2.7 KiB)  TX bytes:2856 (2.7 KiB)</div><div class="line">[root@localhost ~]<span class="comment"># ifconfig eth0 hw ether 00:50:56:BF:26:20 //关闭网卡并修改MAC地址 </span></div><div class="line">[root@localhost ~]<span class="comment"># ifconfig eth0 up //启动网卡</span></div><div class="line">[root@localhost ~]<span class="comment"># ifconfig</span></div><div class="line">eth0      Link encap:Ethernet  HWaddr 00:50:56:BF:26:20  </div><div class="line">          inet addr:192.168.120.204  Bcast:192.168.120.255  Mask:255.255.255.0</div><div class="line">          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1</div><div class="line">          RX packets:8700857 errors:0 dropped:0 overruns:0 frame:0</div><div class="line">          TX packets:31533 errors:0 dropped:0 overruns:0 carrier:0</div><div class="line">          collisions:0 txqueuelen:1000 </div><div class="line">          RX bytes:596390239 (568.7 MiB)  TX bytes:2886956 (2.7 MiB)</div><div class="line"></div><div class="line">lo        Link encap:Local Loopback  </div><div class="line">          inet addr:127.0.0.1  Mask:255.0.0.0</div><div class="line">          UP LOOPBACK RUNNING  MTU:16436  Metric:1</div><div class="line">          RX packets:68 errors:0 dropped:0 overruns:0 frame:0</div><div class="line">          TX packets:68 errors:0 dropped:0 overruns:0 carrier:0</div><div class="line">          collisions:0 txqueuelen:0 </div><div class="line">          RX bytes:2856 (2.7 KiB)  TX bytes:2856 (2.7 KiB)</div></pre></td></tr></table></figure>
<h3 id="实例5：配置IP地址"><a href="#实例5：配置IP地址" class="headerlink" title="实例5：配置IP地址"></a>实例5：配置IP地址</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># ifconfig eth0 192.168.120.56 </span></div><div class="line">[root@localhost ~]<span class="comment"># ifconfig eth0 192.168.120.56 netmask 255.255.255.0 </span></div><div class="line">[root@localhost ~]<span class="comment"># ifconfig eth0 192.168.120.56 netmask 255.255.255.0 broadcast 192.168.120.255</span></div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>说明</strong></p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ifconfig eth0 192.168.120.56</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;给eth0网卡配置IP地：192.168.120.56</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ifconfig eth0 192.168.120.56 netmask 255.255.255.0</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;给eth0网卡配置IP地址：192.168.120.56 ，并加上子掩码：255.255.255.0</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ifconfig eth0 192.168.120.56 netmask 255.255.255.0 broadcast 192.168.120.255</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;/给eth0网卡配置IP地址：192.168.120.56，加上子掩码：255.255.255.0，加上个广播地址： 192.168.120.255</p>
<h3 id="实例6：启用和关闭ARP协议"><a href="#实例6：启用和关闭ARP协议" class="headerlink" title="实例6：启用和关闭ARP协议"></a>实例6：启用和关闭ARP协议</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div></pre></td><td class="code"><pre><div class="line">ifconfig eth0 arp</div><div class="line">ifconfig eth0 -arp</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># ifconfig eth0 arp </span></div><div class="line">[root@localhost ~]<span class="comment"># ifconfig eth0 -arp</span></div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>说明</strong></p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ifconfig eth0 arp 开启网卡eth0 的arp协议；</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ifconfig eth0 -arp 关闭网卡eth0 的arp协议；</p>
<h3 id="实例7：设置最大传输单元"><a href="#实例7：设置最大传输单元" class="headerlink" title="实例7：设置最大传输单元"></a>实例7：设置最大传输单元</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">ifconfig eth0 mtu 1500</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div><div class="line">17</div><div class="line">18</div><div class="line">19</div><div class="line">20</div><div class="line">21</div><div class="line">22</div><div class="line">23</div><div class="line">24</div><div class="line">25</div><div class="line">26</div><div class="line">27</div><div class="line">28</div><div class="line">29</div><div class="line">30</div><div class="line">31</div><div class="line">32</div><div class="line">33</div><div class="line">34</div><div class="line">35</div><div class="line">36</div><div class="line">37</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># ifconfig eth0 mtu 1480</span></div><div class="line">[root@localhost ~]<span class="comment"># ifconfig</span></div><div class="line">eth0      Link encap:Ethernet  HWaddr 00:50:56:BF:26:1F  </div><div class="line">          inet addr:192.168.120.203  Bcast:192.168.120.255  Mask:255.255.255.0</div><div class="line">          UP BROADCAST RUNNING MULTICAST  MTU:1480  Metric:1</div><div class="line">          RX packets:8712395 errors:0 dropped:0 overruns:0 frame:0</div><div class="line">          TX packets:36631 errors:0 dropped:0 overruns:0 carrier:0</div><div class="line">          collisions:0 txqueuelen:1000 </div><div class="line">          RX bytes:597062089 (569.4 MiB)  TX bytes:2643973 (2.5 MiB)</div><div class="line"></div><div class="line">lo        Link encap:Local Loopback  </div><div class="line">          inet addr:127.0.0.1  Mask:255.0.0.0</div><div class="line">          UP LOOPBACK RUNNING  MTU:16436  Metric:1</div><div class="line">          RX packets:9973 errors:0 dropped:0 overruns:0 frame:0</div><div class="line">          TX packets:9973 errors:0 dropped:0 overruns:0 carrier:0</div><div class="line">          collisions:0 txqueuelen:0 </div><div class="line">          RX bytes:518096 (505.9 KiB)  TX bytes:518096 (505.9 KiB)</div><div class="line"></div><div class="line">[root@localhost ~]<span class="comment"># ifconfig eth0 mtu 1500</span></div><div class="line">[root@localhost ~]<span class="comment"># ifconfig</span></div><div class="line">eth0      Link encap:Ethernet  HWaddr 00:50:56:BF:26:1F  </div><div class="line">          inet addr:192.168.120.203  Bcast:192.168.120.255  Mask:255.255.255.0</div><div class="line">          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1</div><div class="line">          RX packets:8712548 errors:0 dropped:0 overruns:0 frame:0</div><div class="line">          TX packets:36685 errors:0 dropped:0 overruns:0 carrier:0</div><div class="line">          collisions:0 txqueuelen:1000 </div><div class="line">          RX bytes:597072333 (569.4 MiB)  TX bytes:2650581 (2.5 MiB)</div><div class="line"></div><div class="line">lo        Link encap:Local Loopback  </div><div class="line">          inet addr:127.0.0.1  Mask:255.0.0.0</div><div class="line">          UP LOOPBACK RUNNING  MTU:16436  Metric:1</div><div class="line">          RX packets:9973 errors:0 dropped:0 overruns:0 frame:0</div><div class="line">          TX packets:9973 errors:0 dropped:0 overruns:0 carrier:0</div><div class="line">          collisions:0 txqueuelen:0 </div><div class="line">          RX bytes:518096 (505.9 KiB)  TX bytes:518096 (505.9 KiB)</div><div class="line"></div><div class="line">[root@localhost ~]<span class="comment">#</span></div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>说明</strong></p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;设置能通过的最大数据包大小为 1500 bytes</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;备注：用ifconfig命令配置的网卡信息，在网卡重启后机器重启后，配置就不存在。要想将上述的配置信息永远的存的电脑里，那就要修改网卡的配置文件了。</p>

	

	

</article>




	<article>
	
		<h1><a href="/2017/10/12/2. Linux 命令/53. Linux 命令- lsof/">Linux 命令- lsof</a></h1>
	
	<div class="article__infos">
		<span class="article__date">2017-10-12</span><br />
		
		
			<span class="article__tags">
			  	<a class="article__tag-link" href="/tags/Linux命令/">Linux命令</a>
			</span>
		
	</div>

	

	
		<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;lsof（list open files）是一个列出当前系统打开文件的工具。在linux环境下，任何事物都以文件的形式存在，通过文件不仅仅可以访问常规数据，还可以访问网络连接和硬件。所以如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等，系统在后台都为该应用程序分配了一个文件描述符，无论这个文件的本质如何，该文件描述符为应用程序与基础操作系统之间的交互提供了通用接口。因为应用程序打开文件的描述符列表提供了大量关于这个应用程序本身的信息，因此通过lsof工具能够查看这个列表对系统监测以及排错将是很有帮助的。</p>
<h2 id="1．命令格式"><a href="#1．命令格式" class="headerlink" title="1．命令格式"></a>1．命令格式</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">lsof [参数] [文件]</div></pre></td></tr></table></figure>
<h2 id="2．命令功能"><a href="#2．命令功能" class="headerlink" title="2．命令功能"></a>2．命令功能</h2><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;用于查看你进程开打的文件，打开文件的进程，进程打开的端口(TCP、UDP)。找回/恢复删除的文件。是十分方便的系统监视工具，因为 lsof 需要访问核心内存和各种文件，所以需要root用户执行。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;lsof打开的文件可以是：</p>
<ol>
<li>普通文件</li>
<li>目录</li>
<li>网络文件系统的文件</li>
<li>字符或设备文件</li>
<li>(函数)共享库</li>
<li>管道，命名管道</li>
<li>符号链接</li>
<li>网络文件（例如：NFS file、网络socket，unix域名socket）</li>
<li>还有其它类型的文件，等等</li>
</ol>
<h2 id="3．命令参数"><a href="#3．命令参数" class="headerlink" title="3．命令参数"></a>3．命令参数</h2><ul>
<li>-a 列出打开文件存在的进程</li>
<li>-c&lt;进程名&gt; 列出指定进程所打开的文件</li>
<li>-g  列出GID号进程详情</li>
<li>-d&lt;文件号&gt; 列出占用该文件号的进程</li>
<li>+d&lt;目录&gt;  列出目录下被打开的文件</li>
<li>+D&lt;目录&gt;  递归列出目录下被打开的文件</li>
<li>-n&lt;目录&gt;  列出使用NFS的文件</li>
<li>-i&lt;条件&gt;  列出符合条件的进程。（4、6、协议、:端口、 @ip ）</li>
<li>-p&lt;进程号&gt; 列出指定进程号所打开的文件</li>
<li>-u  列出UID号进程详情</li>
<li>-h 显示帮助信息</li>
<li>-v 显示版本信息</li>
</ul>
<h2 id="4．使用实例"><a href="#4．使用实例" class="headerlink" title="4．使用实例"></a>4．使用实例</h2><h3 id="实例1：无任何参数"><a href="#实例1：无任何参数" class="headerlink" title="实例1：无任何参数"></a>实例1：无任何参数</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">lsof</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div><div class="line">17</div><div class="line">18</div><div class="line">19</div><div class="line">20</div><div class="line">21</div><div class="line">22</div><div class="line">23</div><div class="line">24</div><div class="line">25</div><div class="line">26</div><div class="line">27</div><div class="line">28</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># lsof</span></div><div class="line"></div><div class="line">COMMAND     PID USER   FD      TYPE             DEVICE     SIZE       NODE NAME</div><div class="line">init          1 root  cwd       DIR                8,2     4096          2 /</div><div class="line">init          1 root  rtd       DIR                8,2     4096          2 /</div><div class="line">init          1 root  txt       REG                8,2    43496    6121706 /sbin/init</div><div class="line">init          1 root  mem       REG                8,2   143600    7823908 /lib64/ld-2.5.so</div><div class="line">init          1 root  mem       REG                8,2  1722304    7823915 /lib64/libc-2.5.so</div><div class="line">init          1 root  mem       REG                8,2    23360    7823919 /lib64/libdl-2.5.so</div><div class="line">init          1 root  mem       REG                8,2    95464    7824116 /lib64/libselinux.so.1</div><div class="line">init          1 root  mem       REG                8,2   247496    7823947 /lib64/libsepol.so.1</div><div class="line">init          1 root   10u     FIFO               0,17                1233 /dev/initctl</div><div class="line">migration     2 root  cwd       DIR                8,2     4096          2 /</div><div class="line">migration     2 root  rtd       DIR                8,2     4096          2 /</div><div class="line">migration     2 root  txt   unknown                                        /proc/2/exe</div><div class="line">ksoftirqd     3 root  cwd       DIR                8,2     4096          2 /</div><div class="line">ksoftirqd     3 root  rtd       DIR                8,2     4096          2 /</div><div class="line">ksoftirqd     3 root  txt   unknown                                        /proc/3/exe</div><div class="line">migration     4 root  cwd       DIR                8,2     4096          2 /</div><div class="line">migration     4 root  rtd       DIR                8,2     4096          2 /</div><div class="line">migration     4 root  txt   unknown                                        /proc/4/exe</div><div class="line">ksoftirqd     5 root  cwd       DIR                8,2     4096          2 /</div><div class="line">ksoftirqd     5 root  rtd       DIR                8,2     4096          2 /</div><div class="line">ksoftirqd     5 root  txt   unknown                                        /proc/5/exe</div><div class="line">events/0      6 root  cwd       DIR                8,2     4096          2 /</div><div class="line">events/0      6 root  rtd       DIR                8,2     4096          2 /</div><div class="line">events/0      6 root  txt   unknown                                        /proc/6/exe</div><div class="line">events/1      7 root  cwd       DIR                8,2     4096          2 /</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>说明</strong></p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>lsof输出各列信息的意义如下：</strong></p>
<ul>
<li>COMMAND：进程的名称</li>
<li>PID：进程标识符</li>
<li>PPID：父进程标识符（需要指定-R参数）</li>
<li>USER：进程所有者</li>
<li>PGID：进程所属组</li>
<li>FD：文件描述符，应用程序通过文件描述符识别该文件。如cwd、txt等<ul>
<li>（1）cwd：表示current work dirctory，即：应用程序的当前工作目录，这是该应用程序启动的目录，除非它本身对这个目录进行更改</li>
<li>（2）txt ：该类型的文件是程序代码，如应用程序二进制文件本身或共享库，如上列表中显示的 /sbin/init 程序</li>
<li>（3）lnn：library references (AIX);</li>
<li>（4）er：FD information error (see NAME column);</li>
<li>（5）jld：jail directory (FreeBSD);</li>
<li>（6）ltx：shared library text (code and data);</li>
<li>（7）mxx ：hex memory-mapped type number xx.</li>
<li>（8）m86：DOS Merge mapped file;</li>
<li>（9）mem：memory-mapped file;</li>
<li>（10）mmap：memory-mapped device;</li>
<li>（11）pd：parent directory;</li>
<li>（12）rtd：root directory;</li>
<li>（13）tr：kernel trace file (OpenBSD);</li>
<li>（14）v86  VP/ix mapped file;</li>
<li>（15）0：表示标准输出</li>
<li>（16）1：表示标准输入</li>
<li>（17）2：表示标准错误</li>
</ul>
</li>
<li>一般在标准输出、标准错误、标准输入后还跟着文件状态模式：r、w、u等<ul>
<li>（1）u：表示该文件被打开并处于读取/写入模式</li>
<li>（2）r：表示该文件被打开并处于只读模式</li>
<li>（3）w：表示该文件被打开并处于</li>
<li>（4）空格：表示该文件的状态模式为unknow，且没有锁定</li>
<li>（5）-：表示该文件的状态模式为unknow，且被锁定</li>
</ul>
</li>
<li>同时在文件状态模式后面，还跟着相关的锁<ul>
<li>（1）N：for a Solaris NFS lock of unknown type;</li>
<li>（2）r：for read lock on part of the file;</li>
<li>（3）R：for a read lock on the entire file;</li>
<li>（4）w：for a write lock on part of the file;（文件的部分写锁）</li>
<li>（5）W：for a write lock on the entire file;（整个文件的写锁）</li>
<li>（6）u：for a read and write lock of any length;</li>
<li>（7）U：for a lock of unknown type;</li>
<li>（8）x：for an SCO OpenServer Xenix lock on part      of the file;</li>
<li>（9）X：for an SCO OpenServer Xenix lock on the      entire file;</li>
<li>（10）space：if there is no lock.</li>
</ul>
</li>
<li>TYPE：文件类型，如DIR、REG等，常见的文件类型<ul>
<li>（1）DIR：表示目录</li>
<li>（2）CHR：表示字符类型</li>
<li>（3）BLK：块设备类型</li>
<li>（4）UNIX： UNIX 域套接字</li>
<li>（5）FIFO：先进先出 (FIFO) 队列</li>
<li>（6）IPv4：网际协议 (IP) 套接字</li>
</ul>
</li>
<li>DEVICE：指定磁盘的名称</li>
<li>SIZE：文件的大小</li>
<li>NODE：索引节点（文件在磁盘上的标识）</li>
<li>NAME：打开文件的确切名称</li>
</ul>
<h3 id="实例2：查看谁正在使用某个文件，也就是说查找某个文件相关的进程"><a href="#实例2：查看谁正在使用某个文件，也就是说查找某个文件相关的进程" class="headerlink" title="实例2：查看谁正在使用某个文件，也就是说查找某个文件相关的进程"></a>实例2：查看谁正在使用某个文件，也就是说查找某个文件相关的进程</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">lsof /bin/bash</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># lsof /bin/bash</span></div><div class="line">COMMAND   PID USER  FD   TYPE DEVICE   SIZE    NODE NAME</div><div class="line">bash    24159 root txt    REG    8,2 801528 5368780 /bin/bash</div><div class="line">bash    24909 root txt    REG    8,2 801528 5368780 /bin/bash</div><div class="line">bash    24941 root txt    REG    8,2 801528 5368780 /bin/bash</div><div class="line">[root@localhost ~]<span class="comment">#</span></div></pre></td></tr></table></figure>
<h3 id="实例3：递归查看某个目录的文件信息"><a href="#实例3：递归查看某个目录的文件信息" class="headerlink" title="实例3：递归查看某个目录的文件信息"></a>实例3：递归查看某个目录的文件信息</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">lsof <span class="built_in">test</span>/test3</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># cd /opt/soft/</span></div><div class="line">[root@localhost soft]<span class="comment"># lsof test/test3</span></div><div class="line">COMMAND   PID USER   FD   TYPE DEVICE SIZE    NODE NAME</div><div class="line">bash    24941 root  cwd    DIR    8,2 4096 2258872 <span class="built_in">test</span>/test3</div><div class="line">vi      24976 root  cwd    DIR    8,2 4096 2258872 <span class="built_in">test</span>/test3</div><div class="line">[root@localhost soft]<span class="comment">#</span></div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>说明</strong></p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;使用了+D，对应目录下的所有子目录和文件都会被列出</p>
<h3 id="实例4：不使用-D选项，遍历查看某个目录的所有文件信息的方法"><a href="#实例4：不使用-D选项，遍历查看某个目录的所有文件信息的方法" class="headerlink" title="实例4：不使用+D选项，遍历查看某个目录的所有文件信息的方法"></a>实例4：不使用+D选项，遍历查看某个目录的所有文件信息的方法</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">lsof |grep <span class="string">'test/test3'</span></div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div></pre></td><td class="code"><pre><div class="line">[root@localhost soft]<span class="comment"># lsof |grep 'test/test3'</span></div><div class="line">bash      24941 root  cwd       DIR                8,2     4096    2258872 /opt/soft/<span class="built_in">test</span>/test3</div><div class="line">vi        24976 root  cwd       DIR                8,2     4096    2258872 /opt/soft/<span class="built_in">test</span>/test3</div><div class="line">vi        24976 root    4u      REG                8,2    12288    2258882 /opt/soft/<span class="built_in">test</span>/test3/.log2013.log.swp</div><div class="line">[root@localhost soft]<span class="comment">#</span></div></pre></td></tr></table></figure>
<h3 id="实例5：列出某个用户打开的文件信息"><a href="#实例5：列出某个用户打开的文件信息" class="headerlink" title="实例5：列出某个用户打开的文件信息"></a>实例5：列出某个用户打开的文件信息</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">lsof -u username</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>说明</strong><br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;-u 选项，u其实是user的缩写</p>
<h3 id="实例6：列出某个程序进程所打开的文件信息"><a href="#实例6：列出某个程序进程所打开的文件信息" class="headerlink" title="实例6：列出某个程序进程所打开的文件信息"></a>实例6：列出某个程序进程所打开的文件信息</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">lsof -c mysql</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>说明</strong><br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;-c 选项将会列出所有以mysql这个进程开头的程序的文件，其实你也可以写成 lsof | grep mysql, 但是第一种方法明显比第二种方法要少打几个字符了</p>
<h3 id="实例7：列出多个进程多个打开的文件信息"><a href="#实例7：列出多个进程多个打开的文件信息" class="headerlink" title="实例7：列出多个进程多个打开的文件信息"></a>实例7：列出多个进程多个打开的文件信息</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">lsof -c mysql -c apache</div></pre></td></tr></table></figure>
<h3 id="实例8：列出某个用户以及某个进程所打开的文件信息"><a href="#实例8：列出某个用户以及某个进程所打开的文件信息" class="headerlink" title="实例8：列出某个用户以及某个进程所打开的文件信息"></a>实例8：列出某个用户以及某个进程所打开的文件信息</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">lsof  -u <span class="built_in">test</span> -c mysql</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>说明</strong><br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;用户与进程可相关，也可以不相关</p>
<h3 id="实例9：列出除了某个用户外的被打开的文件信息"><a href="#实例9：列出除了某个用户外的被打开的文件信息" class="headerlink" title="实例9：列出除了某个用户外的被打开的文件信息"></a>实例9：列出除了某个用户外的被打开的文件信息</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">lsof -u ^root</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>说明</strong><br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;^这个符号在用户名之前，将会把是root用户打开的进程不让显示</p>
<h3 id="实例10：通过某个进程号显示该进行打开的文件"><a href="#实例10：通过某个进程号显示该进行打开的文件" class="headerlink" title="实例10：通过某个进程号显示该进行打开的文件"></a>实例10：通过某个进程号显示该进行打开的文件</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">lsof -p 1</div></pre></td></tr></table></figure>
<h3 id="实例11：列出多个进程号对应的文件信息"><a href="#实例11：列出多个进程号对应的文件信息" class="headerlink" title="实例11：列出多个进程号对应的文件信息"></a>实例11：列出多个进程号对应的文件信息</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">lsof -p 1,2,3</div></pre></td></tr></table></figure>
<h3 id="实例12：列出除了某个进程号，其他进程号所打开的文件信息"><a href="#实例12：列出除了某个进程号，其他进程号所打开的文件信息" class="headerlink" title="实例12：列出除了某个进程号，其他进程号所打开的文件信息"></a>实例12：列出除了某个进程号，其他进程号所打开的文件信息</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">lsof -p ^1</div></pre></td></tr></table></figure>
<h3 id="实例13：列出所有的网络连接"><a href="#实例13：列出所有的网络连接" class="headerlink" title="实例13：列出所有的网络连接"></a>实例13：列出所有的网络连接</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">lsof -i</div></pre></td></tr></table></figure>
<h3 id="实例14：列出所有tcp-网络连接信息"><a href="#实例14：列出所有tcp-网络连接信息" class="headerlink" title="实例14：列出所有tcp 网络连接信息"></a>实例14：列出所有tcp 网络连接信息</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">lsof -i tcp</div></pre></td></tr></table></figure>
<h3 id="实例15：列出所有udp网络连接信息"><a href="#实例15：列出所有udp网络连接信息" class="headerlink" title="实例15：列出所有udp网络连接信息"></a>实例15：列出所有udp网络连接信息</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">lsof -i udp</div></pre></td></tr></table></figure>
<h3 id="实例16：列出谁在使用某个端口"><a href="#实例16：列出谁在使用某个端口" class="headerlink" title="实例16：列出谁在使用某个端口"></a>实例16：列出谁在使用某个端口</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">lsof -i :3306</div></pre></td></tr></table></figure>
<h3 id="实例17：列出谁在使用某个特定的udp端口"><a href="#实例17：列出谁在使用某个特定的udp端口" class="headerlink" title="实例17：列出谁在使用某个特定的udp端口"></a>实例17：列出谁在使用某个特定的udp端口</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">lsof -i udp:55</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;或者：特定的tcp端口</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">lsof -i tcp:80</div></pre></td></tr></table></figure>
<h3 id="实例18：列出某个用户的所有活跃的网络端口"><a href="#实例18：列出某个用户的所有活跃的网络端口" class="headerlink" title="实例18：列出某个用户的所有活跃的网络端口"></a>实例18：列出某个用户的所有活跃的网络端口</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">lsof -a -u <span class="built_in">test</span> -i</div></pre></td></tr></table></figure>
<h3 id="实例19：列出所有网络文件系统"><a href="#实例19：列出所有网络文件系统" class="headerlink" title="实例19：列出所有网络文件系统"></a>实例19：列出所有网络文件系统</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">lsof -N</div></pre></td></tr></table></figure>
<h3 id="实例20：域名socket文件"><a href="#实例20：域名socket文件" class="headerlink" title="实例20：域名socket文件"></a>实例20：域名socket文件</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">lsof -u</div></pre></td></tr></table></figure>
<h3 id="实例21：某个用户组所打开的文件信息"><a href="#实例21：某个用户组所打开的文件信息" class="headerlink" title="实例21：某个用户组所打开的文件信息"></a>实例21：某个用户组所打开的文件信息</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">lsof -g 5555</div></pre></td></tr></table></figure>
<h3 id="实例22：根据文件描述列出对应的文件信息"><a href="#实例22：根据文件描述列出对应的文件信息" class="headerlink" title="实例22：根据文件描述列出对应的文件信息"></a>实例22：根据文件描述列出对应的文件信息</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div></pre></td><td class="code"><pre><div class="line">lsof -d description(like 2)</div><div class="line">例如：lsof  -d  txt</div><div class="line">例如：lsof  -d  1</div><div class="line">例如：lsof  -d  2</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>说明</strong></p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;0表示标准输入，1表示标准输出，2表示标准错误，从而可知：所以大多数应用程序所打开的文件的 FD 都是从 3 开始</p>
<h3 id="实例23：根据文件描述范围列出文件信息"><a href="#实例23：根据文件描述范围列出文件信息" class="headerlink" title="实例23：根据文件描述范围列出文件信息"></a>实例23：根据文件描述范围列出文件信息</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">lsof -d 2-3</div></pre></td></tr></table></figure>
<h3 id="实例24：列出COMMAND列中包含字符串”-sshd”，且文件描符的类型为txt的文件信息"><a href="#实例24：列出COMMAND列中包含字符串”-sshd”，且文件描符的类型为txt的文件信息" class="headerlink" title="实例24：列出COMMAND列中包含字符串” sshd”，且文件描符的类型为txt的文件信息"></a>实例24：列出COMMAND列中包含字符串” sshd”，且文件描符的类型为txt的文件信息</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">lsof -c sshd -a -d txt</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div></pre></td><td class="code"><pre><div class="line">[root@localhost soft]<span class="comment"># lsof -c sshd -a -d txt</span></div><div class="line">COMMAND   PID USER  FD   TYPE DEVICE   SIZE    NODE NAME</div><div class="line">sshd     2756 root txt    REG    8,2 409488 1027867 /usr/sbin/sshd</div><div class="line">sshd    24155 root txt    REG    8,2 409488 1027867 /usr/sbin/sshd</div><div class="line">sshd    24905 root txt    REG    8,2 409488 1027867 /usr/sbin/sshd</div><div class="line">sshd    24937 root txt    REG    8,2 409488 1027867 /usr/sbin/sshd</div><div class="line">[root@localhost soft]<span class="comment"># </span></div><div class="line">[root@localhost soft]<span class="comment">#</span></div></pre></td></tr></table></figure>
<h3 id="实例25：列出被进程号为1234的进程所打开的所有IPV4-network-files"><a href="#实例25：列出被进程号为1234的进程所打开的所有IPV4-network-files" class="headerlink" title="实例25：列出被进程号为1234的进程所打开的所有IPV4 network files"></a>实例25：列出被进程号为1234的进程所打开的所有IPV4 network files</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">lsof -i 4 -a -p 1234</div></pre></td></tr></table></figure>
<h3 id="实例26：列出目前连接主机peida-linux上端口为：20，21，22，25，53，80相关的所有文件信息，且每隔3秒不断的执行lsof指令"><a href="#实例26：列出目前连接主机peida-linux上端口为：20，21，22，25，53，80相关的所有文件信息，且每隔3秒不断的执行lsof指令" class="headerlink" title="实例26：列出目前连接主机peida.linux上端口为：20，21，22，25，53，80相关的所有文件信息，且每隔3秒不断的执行lsof指令"></a>实例26：列出目前连接主机peida.linux上端口为：20，21，22，25，53，80相关的所有文件信息，且每隔3秒不断的执行lsof指令</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">lsof -i @peida.linux:20,21,22,25,53,80  -r  3</div></pre></td></tr></table></figure>
	

	

</article>




	<article>
	
		<h1><a href="/2017/10/12/2. Linux 命令/52. Linux 命令- crontab/">Linux 命令- crontab</a></h1>
	
	<div class="article__infos">
		<span class="article__date">2017-10-12</span><br />
		
		
			<span class="article__tags">
			  	<a class="article__tag-link" href="/tags/Linux命令/">Linux命令</a>
			</span>
		
	</div>

	

	
		<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;循环运行的例行性计划任务，linux系统则是由 cron (crond) 这个系统服务来控制的。Linux 系统上面原本就有非常多的计划性工作，因此这个系统服务是默认启动的。另外, 由于使用者自己也可以设置计划任务，所以， Linux 系统也提供了使用者控制计划任务的命令 :crontab 命令。</p>
<h2 id="一、crond简介"><a href="#一、crond简介" class="headerlink" title="一、crond简介"></a>一、crond简介</h2><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;crond是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程，与windows下的计划任务类似，当安装完成操作系统后，默认会安装此服务工具，并且会自动启动crond进程，crond进程每分钟会定期检查是否有要执行的任务，如果有要执行的任务，则自动执行该任务。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Linux下的任务调度分为两类，系统任务调度和用户任务调度。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;系统任务调度：系统周期性所要执行的工作，比如写缓存数据到硬盘、日志清理等。在/etc目录下有一个crontab文件，这个就是系统任务调度的配置文件。</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div></pre></td><td class="code"><pre><div class="line">/etc/crontab文件包括下面几行：</div><div class="line">[root@localhost ~]<span class="comment"># cat /etc/crontab </span></div><div class="line">SHELL=/bin/bash</div><div class="line">PATH=/sbin:/bin:/usr/sbin:/usr/bin</div><div class="line">MAILTO=<span class="string">""</span>HOME=/</div><div class="line"><span class="comment"># run-parts</span></div><div class="line">51 * * * * root run-parts /etc/cron.hourly</div><div class="line">24 7 * * * root run-parts /etc/cron.daily</div><div class="line">22 4 * * 0 root run-parts /etc/cron.weekly</div><div class="line">42 4 1 * * root run-parts /etc/cron.monthly</div><div class="line">[root@localhost ~]<span class="comment">#</span></div><div class="line">`</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;前四行是用来配置crond任务运行的环境变量，第一行SHELL变量指定了系统要使用哪个shell，这里是bash，第二行PATH变量指定了系统执行命令的路径，第三行MAILTO变量指定了crond的任务执行信息将通过电子邮件发送给root用户，如果MAILTO变量的值为空，则表示不发送任务执行信息给用户，第四行的HOME变量指定了在执行命令或者脚本时使用的主目录。第六至九行表示的含义将在下个小节详细讲述。这里不在多说。<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;用户任务调度：用户定期要执行的工作，比如用户数据备份、定时邮件提醒等。用户可以使用 crontab 工具来定制自己的计划任务。所有用户定义的crontab 文件都被保存在 /var/spool/cron目录中。其文件名与用户名一致。</p>
<h3 id="使用者权限文件："><a href="#使用者权限文件：" class="headerlink" title="使用者权限文件："></a>使用者权限文件：</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;文件：/etc/cron.deny</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;说明：该文件中所列用户不允许使用crontab命令</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;文件：/etc/cron.allow</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;说明：该文件中所列用户允许使用crontab命令</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;文件：/var/spool/cron/</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;说明：所有用户crontab文件存放的目录,以用户名命名</p>
<h3 id="crontab文件的含义："><a href="#crontab文件的含义：" class="headerlink" title="crontab文件的含义："></a>crontab文件的含义：</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;用户所建立的crontab文件中，每一行都代表一项任务，每行的每个字段代表一项设置，它的格式共分为六个字段，前五段是时间设定段，第六段是要执行的命令段，格式如下：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">minute   hour   day   month   week   <span class="built_in">command</span></div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;其中：</p>
<ul>
<li>minute： 表示分钟，可以是从0到59之间的任何整数。</li>
<li>hour：表示小时，可以是从0到23之间的任何整数。</li>
<li>day：表示日期，可以是从1到31之间的任何整数。</li>
<li>month：表示月份，可以是从1到12之间的任何整数。</li>
<li>week：表示星期几，可以是从0到7之间的任何整数，这里的0或7代表星期日。</li>
<li>command：要执行的命令，可以是系统命令，也可以是自己编写的脚本文件。</li>
</ul>
<p><figure class="figure"><img src="https://github.com/hcldirgit/image/blob/master/linux%E5%91%BD%E4%BB%A4-crontab/01.png?raw=true" alt=""></figure></p>
<h3 id="在以上各个字段中，还可以使用以下特殊字符："><a href="#在以上各个字段中，还可以使用以下特殊字符：" class="headerlink" title="在以上各个字段中，还可以使用以下特殊字符："></a>在以上各个字段中，还可以使用以下特殊字符：</h3><ul>
<li>星号（*）：代表所有可能的值，例如month字段如果是星号，则表示在满足其它字段的制约条件后每月都执行该命令操作。</li>
<li>逗号（,）：可以用逗号隔开的值指定一个列表范围，例如，“1,2,5,7,8,9”</li>
<li>中杠（-）：可以用整数之间的中杠表示一个整数范围，例如“2-6”表示“2,3,4,5,6”</li>
<li>正斜线（/）：可以用正斜线指定时间的间隔频率，例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用，例如*/10，如果用在minute字段，表示每十分钟执行一次。</li>
</ul>
<h2 id="二、crond服务"><a href="#二、crond服务" class="headerlink" title="二、crond服务"></a>二、crond服务</h2><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;安装crontab：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">yum install crontabs</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;服务操作说明：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div></pre></td><td class="code"><pre><div class="line">/sbin/service crond start //启动服务</div><div class="line">/sbin/service crond stop //关闭服务</div><div class="line">/sbin/service crond restart //重启服务</div><div class="line">/sbin/service crond reload //重新载入配置</div><div class="line">查看crontab服务状态：</div><div class="line">service crond status</div><div class="line">手动启动crontab服务：</div><div class="line">service crond start</div><div class="line">查看crontab服务是否已设置为开机启动，执行命令：</div><div class="line">ntsysv</div><div class="line">加入开机自动启动：</div><div class="line">chkconfig –level 35 crond on</div></pre></td></tr></table></figure>
<h2 id="三、crontab命令详解"><a href="#三、crontab命令详解" class="headerlink" title="三、crontab命令详解"></a>三、crontab命令详解</h2><h3 id="1．命令格式"><a href="#1．命令格式" class="headerlink" title="1．命令格式"></a>1．命令格式</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div></pre></td><td class="code"><pre><div class="line">crontab [-u user] file</div><div class="line">crontab [-u user] [ -e | -l | -r ]</div></pre></td></tr></table></figure>
<h3 id="2．命令功能"><a href="#2．命令功能" class="headerlink" title="2．命令功能"></a>2．命令功能</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;通过crontab 命令，我们可以在固定的间隔时间执行指定的系统指令或 shell script脚本。时间间隔的单位可以是分钟、小时、日、月、周及以上的任意组合。这个命令非常设合周期性的日志分析或数据备份等工作。</p>
<h3 id="3．命令参数"><a href="#3．命令参数" class="headerlink" title="3．命令参数"></a>3．命令参数</h3><ul>
<li>-u user：用来设定某个用户的crontab服务，例如，“-u ixdba”表示设定ixdba用户的crontab服务，此参数一般有root用户来运行。</li>
<li>file：file是命令文件的名字,表示将file做为crontab的任务列表文件并载入crontab。如果在命令行中没有指定这个文件，crontab命令将接受标准输入（键盘）上键入的命令，并将它们载入crontab。</li>
<li>-e：编辑某个用户的crontab文件内容。如果不指定用户，则表示编辑当前用户的crontab文件。</li>
<li>-l：显示某个用户的crontab文件内容，如果不指定用户，则表示显示当前用户的crontab文件内容。</li>
<li>-r：从/var/spool/cron目录中删除某个用户的crontab文件，如果不指定用户，则默认删除当前用户的crontab文件。</li>
<li>-i：在删除用户的crontab文件时给确认提示。</li>
</ul>
<h3 id="4．常用方法"><a href="#4．常用方法" class="headerlink" title="4．常用方法"></a>4．常用方法</h3><h4 id="1-创建一个新的crontab文件"><a href="#1-创建一个新的crontab文件" class="headerlink" title="1). 创建一个新的crontab文件"></a>1). 创建一个新的crontab文件</h4><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;在考虑向cron进程提交一个crontab文件之前，首先要做的一件事情就是设置环境变量EDITOR。cron进程根据它来确定使用哪个编辑器编辑crontab文件。9 9 %的UNIX和LINUX用户都使用vi，如果你也是这样，那么你就编辑$ HOME目录下的. profile文件，在其中加入这样一行：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">EDITOR=vi; <span class="built_in">export</span> EDITOR</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;然后保存并退出。不妨创建一个名为<user> cron的文件，其中<user>是用户名，例如， davecron。在该文件中加入如下的内容。</user></user></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div></pre></td><td class="code"><pre><div class="line"><span class="comment"># (put your own initials here)echo the date to the console every</span></div><div class="line"><span class="comment"># 15minutes between 6pm and 6am</span></div><div class="line">0,15,30,45 18-06 * * * /bin/<span class="built_in">echo</span> <span class="string">'date'</span> &gt; /dev/console</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;保存并退出。确信前面5个域用空格分隔。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;在上面的例子中，系统将每隔1 5分钟向控制台输出一次当前时间。如果系统崩溃或挂起，从最后所显示的时间就可以一眼看出系统是什么时间停止工作的。在有些系统中，用tty1来表示控制台，可以根据实际情况对上面的例子进行相应的修改。为了提交你刚刚创建的crontab文件，可以把这个新创建的文件作为cron命令的参数：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">$ crontab davecron</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;现在该文件已经提交给cron进程，它将每隔1 5分钟运行一次。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;同时，新创建文件的一个副本已经被放在/var/spool/cron目录中，文件名就是用户名(即dave)。</p>
<h4 id="2-列出crontab文件"><a href="#2-列出crontab文件" class="headerlink" title="2). 列出crontab文件"></a>2). 列出crontab文件</h4><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;为了列出crontab文件，可以用：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div></pre></td><td class="code"><pre><div class="line">$ crontab -l</div><div class="line">0,15,30,45,18-06 * * * /bin/<span class="built_in">echo</span> `date` &gt; dev/tty1</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;将会看到和上面类似的内容。可以使用这种方法在$ H O M E目录中对crontab文件做一备份：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">$ crontab -l &gt; <span class="variable">$HOME</span>/mycron</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;这样，一旦不小心误删了crontab文件，可以用上一节所讲述的方法迅速恢复。</p>
<h4 id="3-编辑crontab文件"><a href="#3-编辑crontab文件" class="headerlink" title="3). 编辑crontab文件"></a>3). 编辑crontab文件</h4><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;如果希望添加、删除或编辑crontab文件中的条目，而E D I TO R环境变量又设置为v i，那么就可以用v i来编辑crontab文件，相应的命令为：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">$ crontab -e</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;可以像使用vi编辑其他任何文件那样修改crontab文件并退出。如果修改了某些条目或添加了新的条目，那么在保存该文件时， c r o n会对其进行必要的完整性检查。如果其中的某个域出现了超出允许范围的值，它会提示你。<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;我们在编辑crontab文件时，没准会加入新的条目。例如，加入下面的一条：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div></pre></td><td class="code"><pre><div class="line"><span class="comment"># DT:delete core files,at 3.30am on 1,7,14,21,26,26 days of each month</span></div><div class="line">30 3 1,7,14,21,26 * * /bin/find -name <span class="string">"core' -exec rm &#123;&#125; \;</span></div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;现在保存并退出。最好在crontab文件的每一个条目之上加入一条注释，这样就可以知道它的功能、运行时间，更为重要的是，知道这是哪位用户的作业。<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;现在让我们使用前面讲过的crontab -l命令列出它的全部信息：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div></pre></td><td class="code"><pre><div class="line">$ crontab -l </div><div class="line"><span class="comment"># (crondave installed on Tue May 4 13:07:43 1999)</span></div><div class="line"><span class="comment"># DT:ech the date to the console every 30 minites</span></div><div class="line">0,15,30,45 18-06 * * * /bin/<span class="built_in">echo</span> `date` &gt; /dev/tty1</div><div class="line"><span class="comment"># DT:delete core files,at 3.30am on 1,7,14,21,26,26 days of each month</span></div><div class="line">30 3 1,7,14,21,26 * * /bin/find -name <span class="string">"core' -exec rm &#123;&#125; \;</span></div></pre></td></tr></table></figure>
<h4 id="4-删除crontab文件"><a href="#4-删除crontab文件" class="headerlink" title="4). 删除crontab文件"></a>4). 删除crontab文件</h4><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;要删除crontab文件，可以用：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">$ crontab -r</div></pre></td></tr></table></figure>
<h4 id="5-恢复丢失的crontab文件"><a href="#5-恢复丢失的crontab文件" class="headerlink" title="5). 恢复丢失的crontab文件"></a>5). 恢复丢失的crontab文件</h4><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;如果不小心误删了crontab文件，假设你在自己的$ H O M E目录下还有一个备份，那么可以将其拷贝到/var/spool/cron/<username>，其中<username>是用户名。如果由于权限问题无法完成拷贝，可以用：</username></username></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">$ crontab &lt;filename&gt;</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;其中，<filename>是你在$ H O M E目录中副本的文件名。<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;建议在自己的$ H O M E目录中保存一个该文件的副本。我就有过类似的经历，有数次误删了crontab文件（因为r键紧挨在e键的右边）。这就是为什么有些系统文档建议不要直接编辑crontab文件，而是编辑该文件的一个副本，然后重新提交新的文件。<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;有些crontab的变体有些怪异，所以在使用crontab命令时要格外小心。如果遗漏了任何选项，crontab可能会打开一个空文件，或者看起来像是个空文件。这时敲delete键退出，不要按<ctrl-d>，否则你将丢失crontab文件。</ctrl-d></filename></p>
<h3 id="5．使用实例"><a href="#5．使用实例" class="headerlink" title="5．使用实例"></a>5．使用实例</h3><h4 id="实例1：每1分钟执行一次command"><a href="#实例1：每1分钟执行一次command" class="headerlink" title="实例1：每1分钟执行一次command"></a>实例1：每1分钟执行一次command</h4><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">* * * * * <span class="built_in">command</span></div></pre></td></tr></table></figure>
<h4 id="实例2：每小时的第3和第15分钟执行"><a href="#实例2：每小时的第3和第15分钟执行" class="headerlink" title="实例2：每小时的第3和第15分钟执行"></a>实例2：每小时的第3和第15分钟执行</h4><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">3,15 * * * * <span class="built_in">command</span></div></pre></td></tr></table></figure>
<h4 id="实例3：在上午8点到11点的第3和第15分钟执行"><a href="#实例3：在上午8点到11点的第3和第15分钟执行" class="headerlink" title="实例3：在上午8点到11点的第3和第15分钟执行"></a>实例3：在上午8点到11点的第3和第15分钟执行</h4><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">3,15 8-11 * * * <span class="built_in">command</span></div></pre></td></tr></table></figure>
<h4 id="实例4：每隔两天的上午8点到11点的第3和第15分钟执行"><a href="#实例4：每隔两天的上午8点到11点的第3和第15分钟执行" class="headerlink" title="实例4：每隔两天的上午8点到11点的第3和第15分钟执行"></a>实例4：每隔两天的上午8点到11点的第3和第15分钟执行</h4><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div><div class="line">17</div><div class="line">18</div><div class="line">19</div><div class="line">20</div><div class="line">21</div><div class="line">22</div></pre></td><td class="code"><pre><div class="line">3,15 8-11 */2 * * <span class="built_in">command</span></div><div class="line">``` </div><div class="line"></div><div class="line"><span class="comment">#### 实例5：每个星期一的上午8点到11点的第3和第15分钟执行</span></div><div class="line">&amp;<span class="comment">#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;**命令**</span></div><div class="line"></div><div class="line">```bash</div><div class="line">3,15 8-11 * * 1 <span class="built_in">command</span></div><div class="line">``` </div><div class="line"></div><div class="line"><span class="comment">#### 实例6：每晚的21:30重启smb </span></div><div class="line">&amp;<span class="comment">#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;**命令**</span></div><div class="line"></div><div class="line">```bash</div><div class="line">30 21 * * * /etc/init.d/smb restart</div><div class="line">``` </div><div class="line"></div><div class="line"><span class="comment">#### 实例7：每月1、10、22日的4 : 45重启smb </span></div><div class="line">&amp;<span class="comment">#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;**命令**</span></div><div class="line"></div><div class="line">```bash</div><div class="line">45 4 1,10,22 * * /etc/init.d/smb restart</div></pre></td></tr></table></figure>
<h4 id="实例8：每周六、周日的1-10重启smb"><a href="#实例8：每周六、周日的1-10重启smb" class="headerlink" title="实例8：每周六、周日的1 : 10重启smb"></a>实例8：每周六、周日的1 : 10重启smb</h4><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">10 1 * * 6,0 /etc/init.d/smb restart</div></pre></td></tr></table></figure>
<h4 id="实例9：每天18-00至23-00之间每隔30分钟重启smb"><a href="#实例9：每天18-00至23-00之间每隔30分钟重启smb" class="headerlink" title="实例9：每天18 : 00至23 : 00之间每隔30分钟重启smb"></a>实例9：每天18 : 00至23 : 00之间每隔30分钟重启smb</h4><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div></pre></td><td class="code"><pre><div class="line">0,30 18-23 * * * /etc/init.d/smb restart</div><div class="line">``` </div><div class="line"></div><div class="line"><span class="comment">#### 实例10：每星期六的晚上11 : 00 pm重启smb </span></div><div class="line">&amp;<span class="comment">#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;**命令**</span></div><div class="line"></div><div class="line">```bash</div><div class="line">0 23 * * 6 /etc/init.d/smb restart</div></pre></td></tr></table></figure>
<h4 id="实例11：每一小时重启smb"><a href="#实例11：每一小时重启smb" class="headerlink" title="实例11：每一小时重启smb"></a>实例11：每一小时重启smb</h4><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">* */1 * * * /etc/init.d/smb restart</div></pre></td></tr></table></figure>
<h4 id="实例12：晚上11点到早上7点之间，每隔一小时重启smb"><a href="#实例12：晚上11点到早上7点之间，每隔一小时重启smb" class="headerlink" title="实例12：晚上11点到早上7点之间，每隔一小时重启smb"></a>实例12：晚上11点到早上7点之间，每隔一小时重启smb</h4><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div></pre></td><td class="code"><pre><div class="line">* 23-7/1 * * * /etc/init.d/smb restart</div><div class="line">``` </div><div class="line"></div><div class="line"><span class="comment">#### 实例13：每月的4号与每周一到周三的11点重启smb </span></div><div class="line">&amp;<span class="comment">#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;**命令**</span></div><div class="line"></div><div class="line">```bash</div><div class="line">0 11 4 * mon-wed /etc/init.d/smb restart</div></pre></td></tr></table></figure>
<h4 id="实例14：一月一号的4点重启smb"><a href="#实例14：一月一号的4点重启smb" class="headerlink" title="实例14：一月一号的4点重启smb"></a>实例14：一月一号的4点重启smb</h4><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">0 4 1 jan * /etc/init.d/smb restart</div></pre></td></tr></table></figure>
<h4 id="实例15：每小时执行-etc-cron-hourly目录内的脚本"><a href="#实例15：每小时执行-etc-cron-hourly目录内的脚本" class="headerlink" title="实例15：每小时执行/etc/cron.hourly目录内的脚本"></a>实例15：每小时执行/etc/cron.hourly目录内的脚本</h4><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">01   *   *   *   *     root run-parts /etc/cron.hourly</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>说明</strong></p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;run-parts这个参数了，如果去掉这个参数的话，后面就可以写要运行的某个脚本名，而不是目录名了</p>
<h2 id="四、使用注意事项"><a href="#四、使用注意事项" class="headerlink" title="四、使用注意事项"></a>四、使用注意事项</h2><h3 id="1-注意环境变量问题"><a href="#1-注意环境变量问题" class="headerlink" title="1. 注意环境变量问题"></a>1. 注意环境变量问题</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;有时创建了一个crontab，但是这个任务却无法自动执行，而手动执行这个任务却没有问题，这种情况一般是由于在crontab文件中没有配置环境变量引起的。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;在crontab文件中定义多个调度任务时，需要特别注意的一个问题就是环境变量的设置，因为我们手动执行某个任务时，是在当前shell环境下进行的，程序当然能找到环境变量，而系统自动执行任务调度时，是不会加载任何环境变量的，因此，就需要在crontab文件中指定任务运行所需的所有环境变量，这样，系统执行任务调度时就没有问题了。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;不要假定cron知道所需要的特殊环境，它其实并不知道。所以你要保证在shelll脚本中提供所有必要的路径和环境变量，除了一些自动设置的全局变量。所以注意如下3点：</p>
<ol>
<li><p>脚本中涉及文件路径时写全局路径；</p>
</li>
<li><p>脚本执行要用到java或其他环境变量时，通过source命令引入环境变量，如：</p>
</li>
</ol>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div></pre></td><td class="code"><pre><div class="line">cat start_cbp.sh</div><div class="line"><span class="meta">#!/bin/sh</span></div><div class="line"><span class="built_in">source</span> /etc/profile</div><div class="line"><span class="built_in">export</span> RUN_CONF=/home/d139/conf/platform/cbp/cbp_jboss.conf</div><div class="line">/usr/<span class="built_in">local</span>/jboss-4.0.5/bin/run.sh -c mev &amp;</div></pre></td></tr></table></figure>
<ol>
<li>当手动执行脚本OK，但是crontab死活不执行时。这时必须大胆怀疑是环境变量惹的祸，并可以尝试在crontab中直接引入环境变量解决问题。如：</li>
</ol>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">0 * * * * . /etc/profile;/bin/sh /var/www/java/audit_no_count/bin/restart_audit.sh</div></pre></td></tr></table></figure>
<h3 id="2-注意清理系统用户的邮件日志"><a href="#2-注意清理系统用户的邮件日志" class="headerlink" title="2. 注意清理系统用户的邮件日志"></a>2. 注意清理系统用户的邮件日志</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;每条任务调度执行完毕，系统都会将任务输出信息通过电子邮件的形式发送给当前系统用户，这样日积月累，日志信息会非常大，可能会影响系统的正常运行，因此，将每条任务进行重定向处理非常重要。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;例如，可以在crontab文件中设置如下形式，忽略日志输出：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">0 */3 * * * /usr/<span class="built_in">local</span>/apache2/apachectl restart &gt;/dev/null 2&gt;&amp;1</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;“/dev/null 2&gt;&amp;1”表示先将标准输出重定向到/dev/null，然后将标准错误重定向到标准输出，由于标准输出已经重定向到了/dev/null，因此标准错误也会重定向到/dev/null，这样日志输出问题就解决了。</p>
<h3 id="3-系统级任务调度与用户级任务调度"><a href="#3-系统级任务调度与用户级任务调度" class="headerlink" title="3. 系统级任务调度与用户级任务调度"></a>3. 系统级任务调度与用户级任务调度</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;系统级任务调度主要完成系统的一些维护操作，用户级任务调度主要完成用户自定义的一些任务，可以将用户级任务调度放到系统级任务调度来完成（不建议这么做），但是反过来却不行，root用户的任务调度操作可以通过“crontab –uroot –e”来设置，也可以将调度任务直接写入/etc/crontab文件，需要注意的是，如果要定义一个定时重启系统的任务，就必须将任务放到/etc/crontab文件，即使在root用户下创建一个定时重启系统的任务也是无效的。</p>
<h3 id="4-其他注意事项"><a href="#4-其他注意事项" class="headerlink" title="4. 其他注意事项"></a>4. 其他注意事项</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;新创建的cron job，不会马上执行，至少要过2分钟才执行。如果重启cron则马上执行。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;当crontab突然失效时，可以尝试/etc/init.d/crond restart解决问题。或者查看日志看某个job有没有执行/报错tail -f /var/log/cron。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;千万别乱运行crontab -r。它从Crontab目录（/var/spool/cron）中删除用户的Crontab文件。删除了该用户的所有crontab都没了。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;在crontab中%是有特殊含义的，表示换行的意思。如果要用的话必须进行转义\%，如经常用的date ‘+%Y%m%d’在crontab里是不会执行的，应该换成date ‘+\%Y\%m\%d’。</p>

	

	

</article>




	<article>
	
		<h1><a href="/2017/10/12/2. Linux 命令/51. Linux 命令- at/">Linux 命令- at</a></h1>
	
	<div class="article__infos">
		<span class="article__date">2017-10-12</span><br />
		
		
			<span class="article__tags">
			  	<a class="article__tag-link" href="/tags/Linux命令/">Linux命令</a>
			</span>
		
	</div>

	

	
		<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;在windows系统中，windows提供了计划任务这一功能，在控制面板 -&gt; 性能与维护 -&gt; 任务计划， 它的功能就是安排自动运行的任务。 通过’添加任务计划’的一步步引导，则可建立一个定时执行的任务。<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;在linux系统中你可能已经发现了为什么系统常常会自动的进行一些任务？这些任务到底是谁在支配他们工作的？在linux系统如果你想要让自己设计的备份程序可以自动在某个时间点开始在系统底下运行，而不需要手动来启动它，又该如何处置呢？ 这些例行的工作可能又分为一次性定时工作与循环定时工作，在系统内又是哪些服务在负责？ 还有，如果你想要每年在老婆的生日前一天就发出一封信件提醒自己不要忘记，linux系统下该怎么做呢？<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;今天我们主要学习一下一次性定时计划任务的at命令的用法！</p>
<h2 id="1．命令格式"><a href="#1．命令格式" class="headerlink" title="1．命令格式"></a>1．命令格式</h2><figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">at [参数] [时间]</div></pre></td></tr></table></figure>
<h2 id="2．命令功能"><a href="#2．命令功能" class="headerlink" title="2．命令功能"></a>2．命令功能</h2><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;在一个指定的时间执行一个指定任务，只能执行一次，且需要开启atd进程（ps -ef | grep atd查看， 开启用/etc/init.d/atd start or restart； 开机即启动则需要运行    chkconfig –level 2345 atd on）。</p>
<h2 id="3．命令参数"><a href="#3．命令参数" class="headerlink" title="3．命令参数"></a>3．命令参数</h2><ul>
<li>-m 当指定的任务被完成之后，将给用户发送邮件，即使没有标准输出</li>
<li>-I atq的别名</li>
<li>-d atrm的别名</li>
<li>-v 显示任务将被执行的时间</li>
<li>-c 打印任务的内容到标准输出</li>
<li>-V 显示版本信息</li>
<li>-q&lt;列队&gt; 使用指定的列队</li>
<li>-f&lt;文件&gt; 从指定文件读入任务而不是从标准输入读入</li>
<li>-t&lt;时间参数&gt; 以时间参数的形式提交要运行的任务 </li>
</ul>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;at允许使用一套相当复杂的指定时间的方法。他能够接受在当天的hh:mm（小时:分钟）式的时间指定。假如该时间已过去，那么就放在第二天执行。当然也能够使用midnight（深夜），noon（中午），teatime（饮茶时间，一般是下午4点）等比较模糊的 词语来指定时间。用户还能够采用12小时计时制，即在时间后面加上AM（上午）或PM（下午）来说明是上午还是下午。 也能够指定命令执行的具体日期，指定格式为month day（月 日）或mm/dd/yy（月/日/年）或dd.mm.yy（日.月.年）。指定的日期必须跟在指定时间的后面。 上面介绍的都是绝对计时法，其实还能够使用相对计时法，这对于安排不久就要执行的命令是很有好处的。指定格式为：now + count time-units ，now就是当前时间，time-units是时间单位，这里能够是minutes（分钟）、hours（小时）、days（天）、weeks（星期）。count是时间的数量，究竟是几天，还是几小时，等等。 更有一种计时方法就是直接使用today（今天）、tomorrow（明天）来指定完成命令的时间。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;TIME：时间格式，这里可以定义出什么时候要进行 at 这项任务的时间，格式有：</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;HH:MM</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ex&gt; 04:00</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;在今日的 HH:MM 时刻进行，若该时刻已超过，则明天的 HH:MM 进行此任务。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;HH:MM YYYY-MM-DD</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ex&gt; 04:00 2009-03-17</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;强制规定在某年某月的某一天的特殊时刻进行该项任务</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;HH:MM[am|pm] [Month] [Date]</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ex&gt; 04pm March 17</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;也是一样，强制在某年某月某日的某时刻进行该项任务</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;HH:MM[am|pm] + number [minutes|hours|days|weeks]</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ex&gt; now + 5 minutes</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ex&gt; 04pm + 3 days</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;就是说，在某个时间点再加几个时间后才进行该项任务。</p>
<h2 id="4．使用实例"><a href="#4．使用实例" class="headerlink" title="4．使用实例"></a>4．使用实例</h2><h3 id="实例1：三天后的下午-5-点锺执行-bin-ls"><a href="#实例1：三天后的下午-5-点锺执行-bin-ls" class="headerlink" title="实例1：三天后的下午 5 点锺执行 /bin/ls"></a>实例1：三天后的下午 5 点锺执行 /bin/ls</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">at 5pm+3 days</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># at 5pm+3 days</span></div><div class="line">at&gt; /bin/ls</div><div class="line">at&gt; &lt;EOT&gt;</div><div class="line">job 7 at 2013-01-08 17:00</div><div class="line">[root@localhost ~]<span class="comment">#</span></div></pre></td></tr></table></figure>
<h3 id="实例2：明天17点钟，输出时间到指定文件内"><a href="#实例2：明天17点钟，输出时间到指定文件内" class="headerlink" title="实例2：明天17点钟，输出时间到指定文件内"></a>实例2：明天17点钟，输出时间到指定文件内</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">at 17:20 tomorrow</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># at 17:20 tomorrow</span></div><div class="line">at&gt; date &gt;/root/2013.log         </div><div class="line">at&gt; &lt;EOT&gt;</div><div class="line">job 8 at 2013-01-06 17:20</div><div class="line">[root@localhost ~]<span class="comment">#</span></div></pre></td></tr></table></figure>
<h3 id="实例3：计划任务设定后，在没有执行之前我们可以用atq命令来查看系统没有执行工作任务"><a href="#实例3：计划任务设定后，在没有执行之前我们可以用atq命令来查看系统没有执行工作任务" class="headerlink" title="实例3：计划任务设定后，在没有执行之前我们可以用atq命令来查看系统没有执行工作任务"></a>实例3：计划任务设定后，在没有执行之前我们可以用atq命令来查看系统没有执行工作任务</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">atq</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># atq</span></div><div class="line">8       2013-01-06 17:20 a root</div><div class="line">7       2013-01-08 17:00 a root</div><div class="line">[root@localhost ~]<span class="comment">#</span></div></pre></td></tr></table></figure>
<h3 id="实例4：删除已经设置的任务"><a href="#实例4：删除已经设置的任务" class="headerlink" title="实例4：删除已经设置的任务"></a>实例4：删除已经设置的任务</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">atrm 7</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># atq</span></div><div class="line">8       2013-01-06 17:20 a root</div><div class="line">7       2013-01-08 17:00 a root</div><div class="line">[root@localhost ~]<span class="comment"># atrm 7</span></div><div class="line">[root@localhost ~]<span class="comment"># atq</span></div><div class="line">8       2013-01-06 17:20 a root</div><div class="line">[root@localhost ~]<span class="comment">#</span></div></pre></td></tr></table></figure>
<h3 id="实例5：显示已经设置的任务内容"><a href="#实例5：显示已经设置的任务内容" class="headerlink" title="实例5：显示已经设置的任务内容"></a>实例5：显示已经设置的任务内容</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">at -c 8</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># at -c 8</span></div><div class="line"><span class="meta">#!/bin/sh</span></div><div class="line"><span class="comment"># atrun uid=0 gid=0</span></div><div class="line"><span class="comment"># mail     root 0</span></div><div class="line"><span class="built_in">umask</span> 22此处省略n个字符</div><div class="line">date &gt;/root/2013.log</div><div class="line">[root@localhost ~]<span class="comment">#</span></div></pre></td></tr></table></figure>
<h2 id="5．atd-的启动与-at-运行的方式："><a href="#5．atd-的启动与-at-运行的方式：" class="headerlink" title="5．atd 的启动与 at 运行的方式："></a>5．atd 的启动与 at 运行的方式：</h2><h3 id="1-atd-的启动"><a href="#1-atd-的启动" class="headerlink" title="1.atd 的启动"></a>1.atd 的启动</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;要使用一次性计划任务时，我们的 Linux 系统上面必须要有负责这个计划任务的服务，那就是 atd 服务。 不过并非所有的 Linux distributions 都默认会把他打开的，所以，某些时刻我们需要手动将atd 服务激活才行。 激活的方法很简单，就是这样：</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div></pre></td><td class="code"><pre><div class="line">/etc/init.d/atd start </div><div class="line">/etc/init.d/atd restart</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div></pre></td><td class="code"><pre><div class="line">[root@localhost /]<span class="comment"># /etc/init.d/atd start</span></div><div class="line">[root@localhost /]<span class="comment"># /etc/init.d/atd </span></div><div class="line">用法：/etc/init.d/atd &#123;start|stop|restart|condrestart|status&#125;</div><div class="line">[root@localhost /]<span class="comment"># /etc/init.d/atd stop</span></div><div class="line">停止 atd：[确定]</div><div class="line">[root@localhost /]<span class="comment"># ps -ef|grep atd</span></div><div class="line">root     25062 24951  0 14:53 pts/0    00:00:00 grep atd</div><div class="line">[root@localhost /]<span class="comment"># /etc/init.d/atd start</span></div><div class="line">[确定]td：[确定]</div><div class="line">[root@localhost /]<span class="comment"># ps -ef|grep atd</span></div><div class="line">root     25068     1  0 14:53 ?        00:00:00 /usr/sbin/atd</div><div class="line">root     25071 24951  0 14:53 pts/0    00:00:00 grep atd</div><div class="line">[root@localhost /]<span class="comment"># /etc/init.d/atd restart</span></div><div class="line">停止 atd：[确定]</div><div class="line">[确定]td：[确定]</div><div class="line">[root@localhost /]<span class="comment">#</span></div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>说明</strong></p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;/etc/init.d/atd start 没有启动的时候，直接启动atd服务</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;/etc/init.d/atd restart 服务已经启动后，重启 atd 服务</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>备注：配置一下启动时就启动这个服务，免得每次重新启动都得再来一次</strong></p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">chkconfig atd on</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div></pre></td><td class="code"><pre><div class="line">[root@localhost /]<span class="comment"># chkconfig atd on</span></div><div class="line">[root@localhost /]<span class="comment">#</span></div></pre></td></tr></table></figure>
<h3 id="2-at-的运行方式"><a href="#2-at-的运行方式" class="headerlink" title="2. at 的运行方式"></a>2. at 的运行方式</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;既然是计划任务，那么应该会有任务执行的方式，并且将这些任务排进行程表中。那么产生计划任务的方式是怎么进行的? 事实上，我们使用 at 这个命令来产生所要运行的计划任务，并将这个计划任务以文字档的方式写入 /var/spool/at/ 目录内，该工作便能等待 atd 这个服务的取用与运行了。就这么简单。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;不过，并不是所有的人都可以进行 at 计划任务。为什么? 因为系统安全的原因。很多主机被所谓的攻击破解后，最常发现的就是他们的系统当中多了很多的黑客程序， 这些程序非常可能运用一些计划任务来运行或搜集你的系统运行信息,并定时的发送给黑客。 所以，除非是你认可的帐号，否则先不要让他们使用 at 命令。那怎么达到使用 at 的可控呢? </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;我们可以利用 /etc/at.allow 与 /etc/at.deny 这两个文件来进行 at 的使用限制。加上这两个文件后， at 的工作情况是这样的：</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;先找寻 /etc/at.allow 这个文件，写在这个文件中的使用者才能使用 at ，没有在这个文件中的使用者则不能使用 at (即使没有写在 at.deny 当中);</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;如果 /etc/at.allow 不存在，就寻找 /etc/at.deny 这个文件，若写在这个 at.deny 的使用者则不能使用 at ，而没有在这个 at.deny 文件中的使用者，就可以使用 at 命令了。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;如果两个文件都不存在，那么只有 root 可以使用 at 这个命令。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;透过这个说明，我们知道 /etc/at.allow 是管理较为严格的方式，而 /etc/at.deny 则较为松散 (因为帐号没有在该文件中，就能够运行 at 了)。在一般的 distributions 当中，由于假设系统上的所有用户都是可信任的， 因此系统通常会保留一个空的 /etc/at.deny 文件，意思是允许所有人使用 at 命令的意思 (您可以自行检查一下该文件)。 不过，万一你不希望有某些使用者使用 at 的话，将那个使用者的帐号写入 /etc/at.deny 即可！ 一个帐号写一行。</p>

	

	

</article>




	<article>
	
		<h1><a href="/2017/10/12/2. Linux 命令/50. Linux 命令- watch/">Linux 命令- watch</a></h1>
	
	<div class="article__infos">
		<span class="article__date">2017-10-12</span><br />
		
		
			<span class="article__tags">
			  	<a class="article__tag-link" href="/tags/Linux命令/">Linux命令</a>
			</span>
		
	</div>

	

	
		<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;watch是一个非常实用的命令，基本所有的Linux发行版都带有这个小工具，如同名字一样，watch可以帮你监测一个命令的运行结果，省得你一遍遍的手动运行。在Linux下，watch是周期性的执行下个程序，并全屏显示执行结果。你可以拿他来监测你想要的一切命令的结果变化，比如 tail 一个 log 文件，ls 监测某个文件的大小变化，看你的想象力了！</p>
<h2 id="1．命令格式"><a href="#1．命令格式" class="headerlink" title="1．命令格式"></a>1．命令格式</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">watch [参数] [命令]</div></pre></td></tr></table></figure>
<h2 id="2-命令功能"><a href="#2-命令功能" class="headerlink" title="2. 命令功能"></a>2. 命令功能</h2><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;可以将命令的输出结果输出到标准输出设备，多用于周期性执行命令/定时执行命令</p>
<h2 id="3．命令参数"><a href="#3．命令参数" class="headerlink" title="3．命令参数"></a>3．命令参数</h2><ul>
<li>-n或–interval  watch缺省每2秒运行一下程序，可以用-n或-interval来指定间隔的时间。</li>
<li>-d或–differences  用-d或–differences 选项watch 会高亮显示变化的区域。 而-d=cumulative选项会把变动过的地方(不管最近的那次有没有变动)都高亮显示出来。</li>
<li>-t 或-no-title  会关闭watch命令在顶部的时间间隔,命令，当前时间的输出。</li>
<li>-h, –help 查看帮助文档</li>
</ul>
<h2 id="4．使用实例"><a href="#4．使用实例" class="headerlink" title="4．使用实例"></a>4．使用实例</h2><h3 id="实例1：每隔一秒高亮显示网络链接数的变化情况"><a href="#实例1：每隔一秒高亮显示网络链接数的变化情况" class="headerlink" title="实例1：每隔一秒高亮显示网络链接数的变化情况"></a>实例1：每隔一秒高亮显示网络链接数的变化情况</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">watch -n 1 -d netstat -ant</div></pre></td></tr></table></figure>
<h4 id="说明："><a href="#说明：" class="headerlink" title="说明："></a>说明：</h4><h5 id="其它操作："><a href="#其它操作：" class="headerlink" title="其它操作："></a>其它操作：</h5><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;切换终端： Ctrl+x</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;退出watch：Ctrl+g</p>
<h3 id="实例2：每隔一秒高亮显示http链接数的变化情况"><a href="#实例2：每隔一秒高亮显示http链接数的变化情况" class="headerlink" title="实例2：每隔一秒高亮显示http链接数的变化情况"></a>实例2：每隔一秒高亮显示http链接数的变化情况</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">watch -n 1 -d <span class="string">'pstree|grep http'</span></div></pre></td></tr></table></figure>
<h4 id="说明：-1"><a href="#说明：-1" class="headerlink" title="说明："></a>说明：</h4><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;每隔一秒高亮显示http链接数的变化情况。 后面接的命令若带有管道符，需要加’’将命令区域归整。</p>
<h3 id="实例3：实时查看模拟攻击客户机建立起来的连接数"><a href="#实例3：实时查看模拟攻击客户机建立起来的连接数" class="headerlink" title="实例3：实时查看模拟攻击客户机建立起来的连接数"></a>实例3：实时查看模拟攻击客户机建立起来的连接数</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">watch <span class="string">'netstat -an | grep:21 | \ grep&lt;模拟攻击客户机的IP&gt;| wc -l'</span></div></pre></td></tr></table></figure>
<h3 id="实例4：监测当前目录中-scf’-的文件的变化"><a href="#实例4：监测当前目录中-scf’-的文件的变化" class="headerlink" title="实例4：监测当前目录中 scf’ 的文件的变化"></a>实例4：监测当前目录中 scf’ 的文件的变化</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">watch -d <span class="string">'ls -l|grep scf'</span></div></pre></td></tr></table></figure>
<h3 id="实例5：10秒一次输出系统的平均负载"><a href="#实例5：10秒一次输出系统的平均负载" class="headerlink" title="实例5：10秒一次输出系统的平均负载"></a>实例5：10秒一次输出系统的平均负载</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">watch -n 10 <span class="string">'cat /proc/loadavg'</span></div></pre></td></tr></table></figure>
	

	

</article>




	<article>
	
		<h1><a href="/2017/10/12/2. Linux 命令/5. Linux 命令-rmdir/">Linux 命令- rmdir</a></h1>
	
	<div class="article__infos">
		<span class="article__date">2017-10-12</span><br />
		
		
			<span class="article__tags">
			  	<a class="article__tag-link" href="/tags/Linux命令/">Linux命令</a>
			</span>
		
	</div>

	

	
		<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;rmdir是常用的命令，该命令的功能是删除空目录，一个目录被删除之前必须是空的。（注意，rm - r dir命令可代替rmdir，但是有很大危险性。）删除某目录时也必须具有对父目录的写权限。     </p>
<h2 id="1．命令格式："><a href="#1．命令格式：" class="headerlink" title="1．命令格式："></a>1．命令格式：</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">rmdir [选项] [目录]</div></pre></td></tr></table></figure>
<h2 id="2．命令功能："><a href="#2．命令功能：" class="headerlink" title="2．命令功能："></a>2．命令功能：</h2><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;该命令从一个目录中删除一个或多个子目录项，删除某目录时也必须具有对父目录的写权限。</p>
<h2 id="3．命令参数："><a href="#3．命令参数：" class="headerlink" title="3．命令参数："></a>3．命令参数：</h2><ul>
<li><ul>
<li>p 递归删除目录dirname，当子目录删除后其父目录为空时，也一同被删除。如果整个路径被删除或者由于某种原因保留部分路径，则系统在标准输出上显示相应的信息。</li>
</ul>
</li>
<li>-v, –verbose  显示指令执行过程 </li>
</ul>
<h2 id="4．命令实例："><a href="#4．命令实例：" class="headerlink" title="4．命令实例："></a>4．命令实例：</h2><h3 id="实例1：rmdir-不能删除非空目录"><a href="#实例1：rmdir-不能删除非空目录" class="headerlink" title="实例1：rmdir 不能删除非空目录"></a>实例1：rmdir 不能删除非空目录</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令：</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">rmdir doc</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出：</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div><div class="line">17</div><div class="line">18</div><div class="line">19</div><div class="line">20</div><div class="line">21</div><div class="line">22</div><div class="line">23</div><div class="line">24</div><div class="line">25</div><div class="line">26</div><div class="line">27</div><div class="line">28</div><div class="line">29</div><div class="line">30</div><div class="line">31</div><div class="line">32</div><div class="line">33</div><div class="line">34</div></pre></td><td class="code"><pre><div class="line">[root@localhost scf]<span class="comment"># tree</span></div><div class="line">.</div><div class="line">|-- bin</div><div class="line">|-- doc</div><div class="line">|   |-- info</div><div class="line">|   `-- product</div><div class="line">|-- lib</div><div class="line">|-- logs</div><div class="line">|   |-- info</div><div class="line">|   `-- product</div><div class="line">`-- service</div><div class="line">    `-- deploy</div><div class="line">        |-- info</div><div class="line">        `-- product</div><div class="line"> </div><div class="line">12 directories, 0 files</div><div class="line">[root@localhost scf]<span class="comment"># rmdir doc</span></div><div class="line">rmdir: doc: 目录非空</div><div class="line">[root@localhost scf]<span class="comment"># rmdir doc/info</span></div><div class="line">[root@localhost scf]<span class="comment"># rmdir doc/product</span></div><div class="line">[root@localhost scf]<span class="comment"># tree</span></div><div class="line">.</div><div class="line">|-- bin</div><div class="line">|-- doc</div><div class="line">|-- lib</div><div class="line">|-- logs</div><div class="line">|   |-- info</div><div class="line">|   `-- product</div><div class="line">`-- service</div><div class="line">    `-- deploy</div><div class="line">        |-- info</div><div class="line">        `-- product</div><div class="line"> </div><div class="line">10 directories, 0 files</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>说明：</strong></p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;rmdir 目录名 命令不能直接删除非空目录</p>
<h3 id="实例2：rmdir-p-当子目录被删除后使它也成为空目录的话，则顺便一并删除"><a href="#实例2：rmdir-p-当子目录被删除后使它也成为空目录的话，则顺便一并删除" class="headerlink" title="实例2：rmdir -p 当子目录被删除后使它也成为空目录的话，则顺便一并删除"></a>实例2：rmdir -p 当子目录被删除后使它也成为空目录的话，则顺便一并删除</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令：</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">rmdir -p logs</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出：</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div><div class="line">17</div><div class="line">18</div><div class="line">19</div><div class="line">20</div><div class="line">21</div><div class="line">22</div><div class="line">23</div><div class="line">24</div><div class="line">25</div><div class="line">26</div><div class="line">27</div><div class="line">28</div><div class="line">29</div><div class="line">30</div><div class="line">31</div><div class="line">32</div><div class="line">33</div><div class="line">34</div><div class="line">35</div><div class="line">36</div><div class="line">37</div><div class="line">38</div><div class="line">39</div><div class="line">40</div></pre></td><td class="code"><pre><div class="line">[root@localhost scf]<span class="comment"># tree</span></div><div class="line">.</div><div class="line">|-- bin</div><div class="line">|-- doc</div><div class="line">|-- lib</div><div class="line">|-- logs</div><div class="line">|   `-- product</div><div class="line">`-- service</div><div class="line">    `-- deploy</div><div class="line">        |-- info</div><div class="line">        `-- product</div><div class="line"> </div><div class="line">10 directories, 0 files</div><div class="line">[root@localhost scf]<span class="comment"># rmdir -p logs</span></div><div class="line">rmdir: logs: 目录非空</div><div class="line">[root@localhost scf]<span class="comment"># tree</span></div><div class="line">.</div><div class="line">|-- bin</div><div class="line">|-- doc</div><div class="line">|-- lib</div><div class="line">|-- logs</div><div class="line">|   `-- product</div><div class="line">`-- service</div><div class="line">    `-- deploy</div><div class="line">        |-- info</div><div class="line">        `-- product</div><div class="line"> </div><div class="line">9 directories, 0 files</div><div class="line">[root@localhost scf]<span class="comment"># rmdir -p logs/product</span></div><div class="line">[root@localhost scf]<span class="comment"># tree</span></div><div class="line">.</div><div class="line">|-- bin</div><div class="line">|-- doc</div><div class="line">|-- lib</div><div class="line">`-- service</div><div class="line">`-- deploy</div><div class="line">        |-- info</div><div class="line">        `-- product</div><div class="line"> </div><div class="line">7 directories, 0 files</div></pre></td></tr></table></figure>

	

	

</article>





	<span class="different-posts">📖 <a href="/page/52">more posts</a> 📖</span>



	</main>

	<footer class="footer">
	<div class="footer-content">
		
	      <div class="footer__element">
	<p>Hi there, <br />welcome to my Blog glad you found it. Have a look around, will you?</p>
</div>

	    
	      <div class="footer__element">
	<h5>Check out</h5>
	<ul class="footer-links">
		<li class="footer-links__link"><a href="/archives">Archive</a></li>
		
		  <li class="footer-links__link"><a href="/atom.xml">RSS</a></li>
	    
		<li class="footer-links__link"><a href="/about">about page</a></li>
		<li class="footer-links__link"><a href="/tags">Tags</a></li>
		<li class="footer-links__link"><a href="/categories">Categories</a></li>
	</ul>
</div>

	    

		<div class="footer-credit">
			<span>© 2017 失落的乐章 | Powered by <a href="https://hexo.io/">Hexo</a> | Theme <a href="https://github.com/HoverBaum/meilidu-hexo">MeiliDu</a></span>
		</div>

	</div>


</footer>



</body>

</html>
